リージョン クラスタ

このページでは、Google Kubernetes Engine(GKE)内のリージョン クラスタの動作について説明します。

リージョン クラスタでは、リージョン内の複数のゾーンにコントロール プレーンとノードが複製されるため、クラスタの可用性が向上します。

リージョン クラスタには、マルチゾーン クラスタのすべての利点に加えて、次の利点も得られます。

  • 単一ゾーンの障害からの復元力: リージョン クラスタは、リージョン内の単一のゾーンだけでなく、リージョン全体で使用できます。単一のゾーンが使用できなくなっても、コントロール プレーンとリソースには影響がありません。
  • 継続的コントロール プレーン アップグレード、コントロール プレーン リサイズ、およびコントロール プレーン障害時のダウンタイムの短縮。コントロール プレーンの冗長レプリカにより、リージョン クラスタは Kubernetes API の可用性を高め、アップグレード中でもコントロール プレーンにアクセスできます。

GKE Autopilot クラスタは常にリージョン クラスタです。GKE Standard を使用する場合は、リージョン、ゾーン、またはマルチゾーンのクラスタを作成することを選択できます。クラスタの可用性のタイプについては、クラスタ構成の選択についてをご覧ください。

Autopilot クラスタを含むリージョン クラスタでは、コントロール プレーンは 1 つのリージョンの 3 つのゾーンに複製されます。GKE は、同じゾーンにノードを自動的に複製します。Standard クラスタとノードプールでは、必要に応じてノードが実行されるゾーンを手動で指定できます。すべてのゾーンは、コントロール プレーンと同じリージョン内に存在する必要があります。

リージョン クラスタを作成した後は、そのクラスタをゾーンクラスタに変更することはできません

リージョン クラスタの仕組み

リージョン クラスタは、クラスタのコントロール プレーンとノードを単一リージョン内の複数のゾーンにわたって複製します。たとえば、us-east1 リージョン内のリージョン クラスタは、デフォルトの構成を使用して 3 つの us-east1 ゾーン(us-east1-bus-east1-cus-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=
        (1) accelerator type "nvidia-tesla-k80" does not exist in zone us-west1-c.
        (2) accelerator type "nvidia-tesla-k80" does not exist in zone us-west1-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 のドキュメントでクラスタ オートスケーラーの詳細や、自動スケーリングに関するよくある質問を確認できます。

次のステップ