Kubernetes を使用してコンテナをオーケストレーションする方法は簡単に説明できますが、それが実際に何を意味し、どのように実装するかを理解することはまったく別の問題です。 Kubernetes クラスターを実行または管理している場合は、Kubernetes が「コントロール プレーン」と呼ばれるマシンと他の多くのワーカー ノード マシンで構成されていることをご存知でしょう。各タイプには、オーケストレーションを可能にする複雑だが安定したスタックがあり、各コンポーネントに精通することで、その動作を理解するのに役立ちます。 (ニヴェド・ベラユダン、CC BY-SA 4.0) コントロールプレーンコンポーネントKubernetes はコントロール プレーンと呼ばれるマシンにインストールされ、Kubernetes デーモンを実行し、コンテナやコンテナ グループ ポッドを起動するときに Kubernetes デーモンと通信します。コントロール プレーンのコンポーネントについては、以下で説明します。 などetcd は、コンテナ グループ、レプリケーション コントローラー、シークレット、サービスなどの Kubernetes オブジェクト データの永続ストレージとして使用される、高速で分散された一貫性のあるキー値ストアです。 etcd は、Kubernetes がクラスターの状態とメタデータを保存する唯一の場所です。 etcd に直接接続する唯一のコンポーネントは Kubernetes API サーバーです。他のすべてのコンポーネントは、API サーバーを介して間接的に etcd からデータを読み書きします。 etcd は、キーの変更を非同期的に監視するためのイベントベースのインターフェースを提供する監視機能も実装しています。キーを変更すると、そのモニターに通知されます。 API サーバー コンポーネントは、通知を受け取り、etcd を目的の状態に変更するためにこれに大きく依存しています。 etcd インスタンスの数はなぜ奇数にする必要があるのでしょうか? 通常、高可用性 (HA) 環境では 3、5、または 7 個の etcd インスタンスを実行しますが、その理由は何でしょうか? etcd は分散データ ストアであるため、水平方向にスケーリングできますが、各インスタンスのデータの一貫性を確保する必要があります。したがって、システムの現在の状態について合意に達する必要があり、etcd はこの目的のために RAFT コンセンサス アルゴリズムを使用します。 RAFT アルゴリズムでは、次の状態に入るために選択 (または仲裁) クラスターが必要です。 etcd インスタンスが 2 つしかなく、そのうちの 1 つに障害が発生した場合、多数決の概念がないため、etcd クラスターは新しい状態に移行できません。 etcd インスタンスが 3 つある場合、1 つのインスタンスが失敗しても、2 つのインスタンスが選択可能です。 API サーバーAPI サーバーは、Kubernetes 内で etcd と直接対話する唯一のコンポーネントです。 Kubernetes の他のすべてのコンポーネントは、クライアント (kubectl) を含め、クラスターの状態を処理するために API サーバーを経由する必要があります。 API サーバーには次の機能があります。
コントローラーマネージャーKubernetes では、コントローラーがクラスターの状態を継続的に監視し、必要に応じて変更を加えたり要求したりします。各コントローラは、現在のクラスタの状態を目的の状態に変更しようとします。コントローラーは少なくとも 1 つの Kubernetes リソース タイプを追跡し、これらの各オブジェクトには目的の状態を表すフィールドがあります。 コントローラーの例:
コントローラには監視メカニズムを通じて変更が通知されます。これらは、API サーバーを監視してリソースの変更を検出し、新しいオブジェクトの作成、既存のオブジェクトの更新または削除など、変更ごとにアクションを実行します。ほとんどの場合、これらの操作には、追加のリソースの作成や監視対象リソース自体の更新が含まれます。ただし、監視を使用してもコントローラーがイベントを見逃さないことが保証されるわけではないため、コントローラーはイベントが見逃されないようにするために、定期的に一連のアクションを実行します。 コントローラー マネージャーはライフサイクル機能も実行します。例としては、名前空間の作成とライフサイクル、イベント ガベージ コレクション、終了したコンテナー グループのガベージ コレクション、カスケード削除のガベージ コレクション、ノードのガベージ コレクションなどがあります。詳細については、「Cloud Controller Manager」を参照してください。 スケジューラスケジューラは、コンテナのグループをノードに割り当てるコントロール プレーン プロセスです。割り当てられたノードがない新しく作成されたコンテナ グループを監視します。スケジューラは、検出された各コンテナ グループを、それを実行するのに最適なノードに割り当てます。 コンテナ グループのスケジュール要件を満たすノードは、スケジュール可能なノードと呼ばれます。適切なノードがない場合、コンテナ グループはスケジューラが配置できるようになるまでスケジュールされないままになります。スケジュール可能なノードが見つかると、一連の関数を実行してノードにスコアを付け、スコアが最も高いノードを選択して、選択したノードについて API サーバーに通知します。このプロセスはバインディングと呼ばれます。 ノードの選択は 2 つのステップに分かれています。
スケジュールを決定する際に考慮すべき要素は次のとおりです。
スケジューラは、選択したノードにコンテナ グループを実行するように指示しません。スケジューラが行うことは、API サーバーを通じてコンテナ グループ定義を更新することだけです。次に、API サーバーは、監視メカニズムを通じて、コンテナ グループがスケジュールされたことを kubelet に通知します。その後、ターゲット ノード上の kubelet サービスは、コンテナ グループがそのノードにスケジュールされたことを確認し、コンテナ グループを作成して実行します。 ワーカーノードのコンポーネントワーカーノードは kubelet エージェントを実行し、コントロールプレーンがそれらを受け入れて負荷を処理できるようにします。コントロール プレーンと同様に、ワーカー ノードはこれを実現するためにいくつかの異なるコンポーネントを使用します。次のセクションでは、ワーカー ノードのコンポーネントについて説明します。 クベレットKubelet は、クラスター内のすべてのノードで実行され、ワーカーノードで実行されるすべてのものを担当するエージェントです。コンテナがポッド内で実行されていることを確認します。 kubelet サービスの主な機能は次のとおりです。
サービスエージェントサービス プロキシ (kube-proxy) は各ノードで実行され、1 つのコンテナ グループが別のコンテナ グループと通信できること、1 つのノードが別のノードと通信できること、1 つのコンテナが別のコンテナと通信できることを保証します。これは、API サーバーを監視してサービスおよびコンテナ グループ定義の変更を検出し、ネットワーク構成全体を最新の状態に保つ役割を担います。サービスが複数のコンテナ グループによってサポートされている場合、プロキシはそれらのコンテナ グループ間で負荷分散を実行します。 kube-proxy は、実際には接続を受け入れてコンテナ グループにプロキシするプロキシ サーバーであるため、プロキシと呼ばれます。現在の実装では、iptables ルールを使用して、実際のプロキシ サーバーを経由せずに、ランダムに選択されたバックエンド コンテナーのグループにパケットをリダイレクトします。 仕組みの概要:
コンテナランタイムコンテナ ランタイムには 2 つの種類があります。
コンテナ ランタイムは次の処理を担当します。
コラボレーションシステムレベルのコンポーネントは連携して動作し、Kubernetes クラスターのすべての部分が目的を達成し、機能を実行できるようにします。 YAML ファイルの編集に深く関わっている場合、リクエストがクラスター全体でどのように伝達されるかを理解するのが難しい場合があります。各要素がどのように組み合わされているかを理解したので、Kubernetes 内で何が起こっているかをより深く理解できるようになり、問題の診断、クラスターの健全性の維持、ワークフローの最適化に役立ちます。 |
<<: Citrix パフォーマンスの問題をトラブルシューティングする方法
電子商取引の混乱における「自殺部隊」とは誰でしょうか?資本が至上である電子商取引市場では、度重なる価...
デジタル化はすべての人に影響を及ぼし、企業にとって大きな可能性と課題を生み出します。ほぼすべての業界...
moonvm は数年前から台湾 VPS を販売しており、台湾の henet データセンターにおける台...
借金のため金儲けを第一に個人の理想を二の次にしていた羅永浩が2018年4月1日に販売員生活を始めたの...
ftpit は、主に VPS 事業を行っている小規模な民間企業です。各 VPS には、Intel S...
Dawang Data は、618 の年半ばの特別プロモーションを実施します。すべてのクラウド サー...
前の記事 k8s-Service Mesh Practice-Istio の概要では、Istio を...
月給5,000~50,000のこれらのプロジェクトはあなたの将来です成外全は、小紅書プロモーションノ...
[[420174]]画像はBaotu.comより以下は、ReactJS プログラムの簡単なオンライン...
著者 |王 陸編集者 |王瑞平この記事は、Zhihu のクラウド ネイティブ アーキテクチャの責任者...
エッジ コンピューティングは、モノのインターネット (IoT) の変革をもたらすテクノロジーとなり、...
現在、多くのWeChatマーケティングソフトウェアの価格は1000元を超えていますが、本質的には、今...
この記事では、必要なツールを選択するための詳細な参考情報を提供するために、ツールのリストをまとめてい...
タオバオの収益:1メートルみなさんこんにちは。Admin5インタビュールームへようこそ。今回は、Ta...
オンラインショッピングの流行はネットユーザーの注目の的となり、オンラインショッピングの流行により、ま...