このページでは、Google Kubernetes Engine(GKE)内のリージョン クラスタの動作について説明します。
リージョン クラスタでは、リージョン内の複数のゾーンにコントロール プレーンとノードが複製されるため、クラスタの可用性が向上します。
リージョン クラスタには、マルチゾーン クラスタのすべての利点に加えて、次の利点も得られます。
- 単一ゾーンの障害からの復元力: リージョン クラスタは、リージョン内の単一のゾーンだけでなく、リージョン全体で使用できます。単一のゾーンが使用できなくなっても、コントロール プレーンとリソースには影響がありません。
- 継続的コントロール プレーン アップグレード、コントロール プレーン リサイズ、およびコントロール プレーン障害時のダウンタイムの短縮。コントロール プレーンの冗長レプリカにより、リージョン クラスタは Kubernetes API の可用性を高め、アップグレード中でもコントロール プレーンにアクセスできます。
GKE Autopilot クラスタは常にリージョン クラスタです。GKE Standard を使用する場合は、リージョン、ゾーン、またはマルチゾーンのクラスタを作成することを選択できます。クラスタの可用性のタイプについては、クラスタ構成の選択についてをご覧ください。
Autopilot クラスタを含むリージョン クラスタでは、コントロール プレーンは 1 つのリージョンの 3 つのゾーンに複製されます。GKE は、同じリージョン内のゾーンにノードを自動的に複製します。Standard クラスタとノードプールでは、必要に応じてノードが実行されるゾーンを手動で指定できます。すべてのゾーンは、コントロール プレーンと同じリージョン内に存在する必要があります。
リージョン クラスタを作成した後は、そのクラスタをゾーンクラスタに変更することはできません
リージョン クラスタの仕組み
リージョン クラスタは、クラスタのコントロール プレーンとノードを単一リージョン内の複数のゾーンにわたって複製します。たとえば、us-east1
リージョン内のリージョン クラスタは、デフォルトの構成を使用して 3 つの us-east1
ゾーン(us-east1-b
、us-east1-c
、us-east1-d
)でコントロール プレーンとノードのレプリカを作成します。インフラストラクチャが停止しても、Autopilot ワークロードは引き続き実行され、GKE は自動的にノードを再調整します。Standard クラスタを使用する場合は、手動で、またはクラスタ オートスケーラーを使用して、ノードを再調整する必要があります。
制限事項
リージョン Standard クラスタ用に作成されるデフォルトのノードプールは、リージョン内の 3 つのゾーンに均等に分散した 9 つのノード(ゾーンごとに 3 つ)で構成されています。一般公開クラスタの場合、9 つの IP アドレスを消費します。必要に応じて、ノードの数をゾーンあたり 1 つに減らすことができます。新規に作成された Cloud Billing アカウントには、リージョンごとに 8 つの IP アドレスしか付与されないため、リージョン クラスタの規模に応じて、使用中のリージョン IP アドレスの割り当ての増加をリクエストする必要があります。使用可能な IP アドレスが少なすぎると、クラスタの作成が失敗します。
リージョン クラスタで GPU を実行するには、リクエストされた GPU が利用可能なゾーンが 1 つ以上あるリージョンを選択します。ノードプールを作成するときに、
--node-locations
フラグを使用して、リクエストされた GPU を含むゾーン(複数可)を指定する必要があります。選択したリージョンに、リクエストした GPU を使用できるゾーンが 1 つもない場合、次のようなエラーが表示されることがあります。
ERROR: (gcloud.container.clusters.create) ResponseError: code=400, message= Accelerator type "nvidia-l4" does not exist in zone europe-west3-a.
GPU を利用できるリージョンとゾーンの一覧については、Compute Engine の GPU をご覧ください。
標準モードのノードプールのゾーンは、クラスタのコントロール プレーンと同じリージョンに存在する必要があります。必要に応じて、クラスタのゾーンを変更できます。変更すると、新規ノードと既存ノードのすべてがそれらのゾーンにまたがることになります。
料金
すべての Autopilot クラスタはリージョン単位であり、Autopilot の料金モデルが適用されます。
Standard モードでは、リージョン クラスタには、類似のゾーンクラスタまたはマルチゾーン クラスタよりも多くのプロジェクトのリージョン割り当てが必要になります。リージョン クラスタを使用する前に、割り当てと Standard の料金を確実に理解してください。Insufficient regional quota to satisfy request for resource
エラーが発生した場合、そのリクエストは現在のリージョンで使用可能な割り当てを超えています。
また、複数のゾーンにまたがるノード間トラフィックに対しても料金が発生します。たとえば、あるゾーンで実行中のワークロードが別のゾーンのワークロードと通信する必要がある場合、ゾーン間トラフィックが課金されます。詳細については、Compute Engine の料金ページで同一リージョン内のゾーン間の下り(GB あたり)をご覧ください。
リージョン クラスタ内の永続ストレージ
ゾーン永続ディスクはゾーンリソースであり、リージョン永続ディスクはマルチゾーン リソースです。永続ストレージを追加するとき、ゾーンが指定されない限り、GKE はディスクを単一のランダムなゾーンに割り当てます。ゾーンの制御方法については、永続ディスクのゾーンをご覧ください。
リージョン クラスタの自動スケーリング
クラスタ オートスケーラーを使用してリージョンの Standard モードのクラスタ内のノードプールを自動的にスケーリングする場合は、次の点に留意してください。
さらに、リージョン クラスタの自動スケーリングの制限に関する詳細や、クラスタ オートスケーラーがゾーン間で均衡化を図る方法の詳細を確認することもできます。
これらの考慮事項は、クラスタ オートスケーラーを備えた Standard モードのクラスタにのみ適用されます。
スケーリング制限のオーバープロビジョニング
万一ゾーンで障害が発生しても容量を維持できるように、GKE にスケーリング制限の超過を許可し、一部のゾーンが使用できない場合でも最小限の可用性を確保できます。
たとえば、3 つのゾーンにまたがるクラスタに対して 150%(50% の容量超過)のオーバープロビジョニングを設定すると、クラスタの容量の 3 分の 1 が失われたとしても、利用可能なゾーンにトラフィックの 100% が確実にルーティングされます。上記の例では、ゾーンごとの最大ノード数を 4 ではなく 6 に指定することでこれを実現できます。この場合、いずれか 1 つのゾーンで障害が発生すると、クラスタは残りのゾーン内にある 12 のノードにスケールします。
同様に、2 つのゾーンにまたがるクラスタに対して 200% のオーバープロビジョニングを設定すると、クラスタの容量の半分が失われたとしても、トラフィックの 100% が確実にルーティングされます。
Kubernetes のドキュメントでクラスタ オートスケーラーの詳細や、自動スケーリングに関するよくある質問を確認できます。
次のステップ
- リージョン クラスタを作成する。
- さまざまなクラスタのタイプの詳細を確認する。
- ノードプールの詳細を確認する。
- クラスタ アーキテクチャの詳細を確認する。