このページでは、Google Kubernetes Engine(GKE)クラスタのアーキテクチャについて説明します。コンテナ化された Kubernetes ワークロードはすべて GKE クラスタで実行されます。
GKE クラスタは、コントロール プレーンとノードと呼ばれるワーカーマシンで構成されます。コントロール プレーンとノードが Kubernetes クラスタ オーケストレーション システムを構成します。GKE Autopilot は、コントロール プレーン、ノード、すべてのシステム コンポーネントなど、クラスタの基盤となるインフラストラクチャ全体を管理します。GKE Standard モードを使用する場合、GKE はコントロール プレーンとシステム コンポーネントを管理し、ノードはお客様が管理します。
次の図は、GKE クラスタのアーキテクチャを示しています。
コントロール プレーンの概要
コントロール プレーンは、Kubernetes API サーバー、スケジューラ、コアリソース コントローラなどのプロセスを実行します。GKE は、クラスタの作成から削除までコントロール プレーンのライフサイクルを管理します。コントロール プレーン上で実行される Kubernetes バージョンのアップグレードも管理の対象になります。アップグレードは GKE によって自動的に行われますが、自動スケジュールの前に手動で行うこともできます。
コントロール プレーンと Kubernetes API
コントロール プレーンはクラスタの統合エンドポイントです。Kubernetes API 呼び出しを介してコントロール プレーンを操作します。コントロール プレーンは Kubernetes API サーバー プロセス(kube-apiserver
)を実行して API リクエストを処理します。Kubernetes API 呼び出しは次の方法で行うことができます。
- 直接呼び出し: HTTP/gRPC
- 間接呼び出し:
kubectl
などの Kubernetes コマンドライン クライアント、または Google Cloud コンソール。
API サーバー プロセスはクラスタのすべての通信のハブとなります。ノード、システム プロセス、アプリケーション コントローラなどのすべての内部クラスタ コンポーネントは、API サーバーのクライアントとして機能します。
API リクエストにより、クラスタ内のオブジェクトに対して望ましい状態が Kubernetes に通知されます。Kubernetes は、常にその状態を維持しようとします。 Kubernetes では、API 内でオブジェクトを命令型または宣言型で構成できます。
Kubernetes のオブジェクト管理の詳細については、次のページをご覧ください。
コントロール プレーンとノードのインタラクション
コントロール プレーンは、クラスタのすべてのノードで実行される処理を管理します。コントロール プレーンは、ワークロードのスケジュールを設定し、ワークロードのライフサイクル、スケーリング、アップグレードを管理します。また、コントロール プレーンは、これらのワークロードのネットワーク リソースやストレージ リソースの管理も行います。コントロール プレーンとノードは Kubernetes API を使用して相互に通信します。
Artifact Registry とコントロール プレーンのインタラクション
クラスタを作成または更新すると、GKE はコントロール プレーンと Kubernetes ノードで実行されている Kubernetes システム ソフトウェアのコンテナ イメージを pkg.dev
Artifact Registry または gcr.io
Container Registry から pull します。こうしたレジストリに影響する障害により、次のアクションが失敗する場合があります。
- 新しいクラスタの作成
- クラスタ バージョンのアップグレード
停止の原因と期間によっては、ユーザーの介入がなくてもワークロードの中断が発生する場合があります。
pkg.dev
Artifact Registry または gcr.io
Container Registry の停止がリージョンの場合、Google は機能停止の影響を受けていないゾーンまたはリージョンにリクエストをリダイレクトすることがあります。
Google Cloud サービスの現在のステータスを確認するには、Google Cloud ステータス ダッシュボードを開きます。
ノードの概要
ノードは、コンテナ化されたアプリケーションと他のワークロードを実行するワーカーマシンです。個々のマシンは、GKE が作成する Compute Engine 仮想マシン(VM)です。コントロール プレーンは、各ノード自身が報告するステータスの更新を管理して受信します。
ノードは、クラスタのワークロードを構成するコンテナをサポートするために必要なサービスを実行します。これにはランタイムと Kubernetes ノード エージェント(kubelet
)も含まれます。後者は、コントロール プレーンと通信し、ノード上でスケジュールされたコンテナの起動と実行を行います。
また、GKE は、DaemonSet と呼ばれるノード単位のエージェントとして実行される多くのシステム コンテナを実行して、ログ収集やクラスタ内ネットワーク接続などの機能を提供します。
ノード管理は、次のようなクラスタの運用モードによって異なります。
ノード コンポーネント | Autopilot モード | 標準モード |
---|---|---|
Lifecycle | GKE によるフルマネージドには以下が含まれます。
|
GKE は次のものを管理します。
ユーザーは次のものを管理できます。
|
可視性 | kubectl を使用してノードを表示します。基盤となる Compute Engine 仮想マシンが gcloud CLI または Google Cloud コンソールで表示またはアクセスできない。 |
ノードを表示するには、kubectl 、gcloud CLI、Google Cloud コンソールを使用します。基盤となる Compute Engine VM を表示し、アクセスします。 |
接続 | 基盤となる VM に直接接続していない。 | SSH を使用して、基盤となる VM に接続します。 |
ノード オペレーティング システム(OS) | GKE による管理。 すべてのノードで containerd(cos_containerd )を含む Container-Optimized OS が使用されます。 |
ノードのオペレーティング システムを選択する。 |
マシン ハードウェアの選択 | ユースケースに基づいて、Pod のコンピューティング クラスをリクエストします。 GKE は、マシンの構成、スケジュール、数量、ライフサイクルを管理します。 |
ノードプールの作成時に、Compute Engine のマシンタイプを選択して構成します。必要に応じて、サイズ設定、スケーリング、数量、スケジュール、場所を構成できます。 |