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 パフォーマンスの問題をトラブルシューティングする方法
hostyun が最近日本の大阪で使用したサーバーは、ハイエンドの AMD プラットフォームを使用し...
韓国のソウル データ センターにある韓国サーバー moack が 50% オフで販売中です。月額料金...
今日のクラウド セキュリティを理解するのは難しい場合があります。多くのセキュリティ専門家は、「クラウ...
GoogleペンギンアルゴリズムのアップデートはSEO業界に大きな波紋を巻き起こしました。アルゴリズ...
2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますウェブサイ...
はじめに: イノベーション主導の開発は、中国の発展にとって戦略的優先事項です。デジタルイノベーション...
このように言う理由は、多くのウェブマスターの友人が、Baidu のアルゴリズムのアップグレードを「ア...
前回の記事では、Devops の概念と、Devops を適用することで企業がもたらすメリットについて...
今月初め、著名な調査機関 IDG が 2018 年のクラウド コンピューティング調査レポート (20...
SEO 業界に参入してから 1 年半の間、私の哲学は常に、キーワードの最適化を二次的な優先事項として...
Hostodo がウェブサイトをリニューアルしたことをご存知ですか? OpenVZシリーズVPSはウ...
1.競合製品の分析方法を学ぶ競合分析は、あらゆる職種において最も重要なスキルの 1 つです。競合製品...
アフリカ人のホストは本当に珍しいのでしょうか?南アフリカのヨハネスブルグデータセンターにあるhost...
[51CTO.com からのオリジナル記事] インターネット業界の急速な発展に伴い、IT 実務家は多...
servarica はプロモーション用に別の大容量ハードドライブ VPS をリリースしました。今回の...