1. 背景分散アーキテクチャでは、サービスの数とシステム区分の両方の観点から、管理する必要があるサービスが多数あります。 サービス機能の観点から見ると、階層的な管理と制御を実装できますが、かなりの数のサービス層がほとんど更新されないため、認識が明確ではありません。 私が現在開発に携わっているシステムを例に挙げてみましょう。 K8S によって管理されるサービスは 100 近くあり、そのうちのいくつかはクラスター モードを使用します。この規模のシステムであっても、完全に手動での操作と保守に頼ることはほぼ不可能であり、自動化されたプロセスが不可欠です。 継続的インテグレーション私は以前、このトピックに関する完全な実践的なケーススタディを書きました。Jenkins、Docker、K8S などのコンポーネントの使用に焦点を当て、ソースコードのコンパイル、パッケージ化、イメージの構築、およびデプロイメントの自動管理プロセスをまとめました。 Jenkins: ビルド、テスト、デプロイメントなどのさまざまなタスクを自動化するために使用される、非常にスケーラブルなソフトウェアです。 Docker: オープンソースのアプリケーション コンテナ エンジンとして、アプリケーションと関連する依存関係をパッケージ化してイメージ ファイルを生成できます。持続可能な配信機能を提供する標準的な運用環境です。 Kubernetes: コンテナ化されたアプリケーションの展開、スケーリング、管理を自動化するために使用されるオープンソースのコンテナ オーケストレーション エンジン。 3. K8Sアーキテクチャ1. コアコンポーネントコントロールプレーンコンポーネント: コントロールプレーンコンポーネント リソースのスケジュール設定、検出、イベント応答など、クラスター内の任意のノードで実行できるクラスターに関するグローバルな決定を行います。
ノード: ノードコンポーネント このコンポーネントは各ノードで実行され、実行中の Pod を維持し、Kubernetes オペレーティング環境を提供する役割を担います。
コンテナ ランタイム: コンテナ ランタイム コンテナ ソフトウェアの実行を担当し、Docker、containerd、CRI-O、Kubernetes-CRI を実装するコンテナ ランタイム環境インターフェースなどの複数のコンテナ ランタイム環境をサポートします。 2. 階層構造全体的な機能の観点から見ると、K8S クラスターはユーザー、コントロール プレーン、ノードの 3 つのモジュールに分けられます。 ユーザー側: CLI と UI の両方がコントロール パネルの API サーバーと対話し、API サーバーが他のコンポーネントと対話して、最終的に対応する操作コマンドを実行します。 コントロール プレーン: 以前はマスターとも呼ばれていましたが、コア コンポーネントには API サーバー、コントローラー、スケジューラー、etcd が含まれており、主にクラスター全体のスケジュール設定とグローバルな決定を行うために使用されます。 ノード: ワークロードは、ノード上で実行されているポッドにコンテナを配置することによって実行されます。簡単に言えば、ワークロードとはさまざまなアプリケーションです。ノード上のコア コンポーネントには、Pod、kubelet、Container-Runtime、kube-proxy などがあります。 3. コアコンピテンシーR&D の観点から見ると、K8S は非常に強力なアプリケーション サービス管理機能を提供します。 3.1 検出とロードサービスは、1 つまたは複数の Pod 上で実行されているネットワーク アプリケーションを、通常はラベルを使用してリソース オブジェクトをフィルター処理し、ネットワーク サービス メソッドとして公開できます。 3.2 スケジュールスケジューラは監視メカニズムを使用して、まだノードにスケジュールされていないクラスター内の新しく作成されたポッドを検出します。 Pod 内のコンテナと Pod 自体のリソース要件は異なる場合があるため、スケジューラは Pod を適切なノードに配置します。 3.3 自動スケーリングK8S は、CPU 使用率、応答時間、メモリ使用率などの指標を通じてワークロードのリソース要件を確認し、スケーリングが必要かどうかを判断できます。垂直方向の次元ではリソース割り当てが増え、水平方向の次元ではクラスターの展開が増えます。 K8S は自動的にスケーリングおよび修復できます。ノードまたはアプリケーション サービスに障害が発生すると、それが検出され、ノードが移行または再起動される可能性があります。 IV.応用事例1. サービスの展開これまでの実践例では、デプロイメント アクションは CLI コマンド ラインとスクリプト ファイルを使用して完了していました。プロセス全体には、クラスターの複数のコンポーネント間のコラボレーション、複数の通信、およびスケジュール設定が含まれていました。 2. 対話プロセス[1] CLIコマンドラインとUIインターフェースはどちらも、前述のPodデプロイメント操作など、APIサーバーインターフェースを介してクラスターの内部コンポーネントと対話します。 [2] リクエストを受信した後、APIサーバーはシリアル化された状態オブジェクトをetcdに書き込み、ストレージ操作を完了します。 【3】スケジューラはウォッチメカニズムを使用して、クラスター内でまだノードにスケジュールされていない新しく作成されたポッドを検出します。 [4] クラスター内のポッドのスケジュール可能なノードをすべて検索し、これらのスケジュール可能なノードにスコアを付け、スコアが最も高いノードを選択してポッドを実行し、スケジューラはAPIサーバーにスケジュールの決定を通知します。 【5】APIサーバーは情報の保存を完了すると、対応するノードのKubeletに通知します。 【6】Kubelet は PodSpecs に基づいて動作し、これらの PodSpecs に記述されたコンテナが実行され、正常であることを保証します。各 PodSpec は、Pod を記述する YAML または JSON オブジェクトです。 【7】Podは、Kubernetesで作成および管理できる、1つ以上のコンテナを含む、展開可能な最小のコンピューティングユニットです。 5. 参照ソースコード
|
<<: クラウド変更管理戦略を適応するための 3 つのルール
>>: データベースのクラウド化がトレンドになります。 Alibaba CloudとMongoDBが新たな協力の旅を始める
新規加盟店の Hiformance は、ユタ州のデータセンターで KVM 仮想 VPS を暫定的に運...
中小企業が「リーダー崇拝」病にかかっている場合、どうやって治すのか?ピザを分けるというアイデアに触発...
みなさんこんにちは。私は対外貿易ウェブサイトの最適化、つまりGoogleの最適化に携わっている者です...
友達と外食するとき、街のホテルの食事はどんどん悪くなっているとよく言われます。おいしいおやつを食べた...
フォグ コンピューティングは、コンピューティング能力とデータ分析アプリケーションをネットワークの「エ...
最近、私に相談に来る学生の多くが、直帰率や直帰率を下げる方法などについてばかり話していて、直帰率が何...
ferngullygraphics.com、これは本当に奇妙なもので、業界にとって恥ずかしいものです...
「世界を圧倒した囲碁ゲーム『アルファ碁』の開発者とそのチームは、囲碁がそれほど上手ではなかったかもし...
ご存知のとおり、不幸は往々にして幸運をもたらし、幸運は往々にして不幸をもたらします。2012 年、S...
最近、国内のリベートサイトに関する悪いニュースが相次いでいる。河南省、浙江省、福建省などの多くのリベ...
特定業界向けビジネスクラウドソフトウェアプロバイダーのInforは、深セン前海連益融金融サービス有限...
ウェブマスター向けのウェブサイトであるため、GG広告を掲載する際には「推奨」を重視し、オンライン収益...
大企業が引き続き参入し、中小企業も着実に前進しています。過去 6 か月間でモバイル ゲーム業界にはど...
「お金の流れを良くしたいなら、道路が必要だ」ということわざがある。多くの場所で、経済を活性化させるた...
2018 年 1 月 9 日、北京 - 中国のエンタープライズ IT クラウド管理およびインテリジェ...