Autopilot クラスタのアーキテクチャ


クラスタは Google Kubernetes Engine(GKE)の基盤であり、コンテナ化されたアプリケーションを表す Kubernetes オブジェクトはすべてクラスタ上で実行されます。

Autopilot モードでは、クラスタは可用性の高いコントロール プレーンと、ノードと呼ばれる複数のワーカーマシンで構成されます。これらのコントロール プレーンとノードマシンが、Kubernetes クラスタ オーケストレーション システムを実行します。Autopilot モードのクラスタの場合、GKE は、コントロール プレーン、ノード、すべてのシステム コンポーネントなど、クラスタの基盤となるインフラストラクチャ全体を管理します。

次の図は、GKE の Autopilot クラスタのアーキテクチャの概要を示したものです。

GKE は、コントロール プレーンですべてのプロビジョニング、維持、管理を行いますが、ノードに対してはプロビジョニングのみを行います。

コントロール プレーン

コントロール プレーンは、Kubernetes API サーバー、スケジューラ、コアリソース コントローラなどのコントロール プレーン プロセスを実行します。コントロール プレーンのライフサイクルは、クラスタを作成または削除したときに GKE によって管理されます。コントロール プレーン上で動作している Kubernetes バージョンのアップグレードも管理の対象になります。Autopilot クラスタの場合、アップグレードは GKE によって自動的に行われます。

コントロール プレーンと Kubernetes API

コントロール プレーンはクラスタの統合エンドポイントです。クラスタのすべての操作は Kubernetes API 呼び出しを経由して行われます。コントロール プレーンは、Kubernetes API サーバー プロセスを実行して、これらのリクエストを処理します。Kubernetes API 呼び出しは HTTP/gRPC 経由で直接行うことができますが、Kubernetes コマンドライン クライアント(kubectl)からのコマンドや Cloud Console の UI など、間接的な呼び出し方法もあります。

API サーバー プロセスはクラスタのすべての通信のハブとなります。すべての内部的なクラスタ プロセス(クラスタノード、システムとコンポーネント、アプリケーション コントローラなど)は、API サーバーのクライアントとして機能します。API サーバーはクラスタ全体の信頼できる唯一の情報源となります。

コントロール プレーンとノードのインタラクション

コントロール プレーンにより、クラスタのノード上で実行されるものが決まります。たとえば、ワークロードのスケジューリング(コンテナ化されたアプリケーションなど)、ワークロードのライフサイクル、スケーリング、アップグレードの管理などです。また、コントロール プレーンは、これらのワークロードのネットワーク リソースやストレージ リソースの管理も行います。

コントロール プレーンとノードは Kubernetes API を介して通信を行います。

Artifact Registry および Container Registry とコントロール プレーンのインタラクション

クラスタを作成または更新した場合、コントロール プレーン(およびノード)で実行されている Kubernetes ソフトウェアのコンテナ イメージが pkg.dev Artifact Registry または gcr.io Container Registry から pull されます。こうしたレジストリに影響する障害により、次のような障害が発生する場合があります。

  • 停止中にクラスタの新規作成が失敗する。
  • 停止中にクラスタのアップグレードが失敗する。
  • 停止の原因と期間によっては、ユーザーの介入がなくてもワークロードの中断が発生する。

pkg.dev Artifact Registry または gcr.io Container Registry が特定のリージョンで停止した場合、Google は機能停止の影響を受けていないゾーンまたはリージョンにリクエストをリダイレクトすることがあります。

Google Cloud サービスの現在のステータスを確認するには、Google Cloud ステータス ダッシュボードを開きます。

ノード

クラスタにはノードがあります。これは、コンテナ化されたアプリケーションや他のワークロードを実行するワーカーマシンです。Autopilot がノードを管理し、コントロール プレーンは各ノード自身が報告するステータスの更新を受信します。ノードサイズ、ノードタイプ、ノード数は、リソースが指定されたすべてのワークロードとクラスタの実際の負荷に基づいて、Autopilot によって自動的に決定されます。Autopilot クラスタの場合、kubectl describe nodes コマンドを使用してノードを表示できますが、管理および操作する必要はありません。Standard モードと異なり、ノードは Compute Engine または gcloud compute instances list コマンドでは表示されません。

OS イメージ

Autopilot クラスタは、コンテナの実行に containerd(cos_containerd)を含む Container-Optimized OS を使用します。