トポロジ ドメインを設定する

このページでは、トポロジ ドメインの概要と、トポロジ ドメインを設定する際のガイドラインについて説明します。

トポロジ ドメインを設定するには、高度なクラスタを有効にする必要があります。高度なクラスタ プレビューには次の制限事項があります。

  • 高度なクラスタは、新しい 1.31 クラスタのクラスタ作成時にのみ有効にできます。
  • 高度なクラスタを有効にすると、クラスタを 1.32 にアップグレードできなくなります。高度なクラスタはテスト環境でのみ有効にします。

このページは、会社の戦略に従って IT ソリューションとシステム アーキテクチャを定義し、ユーザー権限に関連するポリシーを作成および管理する、管理者とアーキテクトを対象としています。 Google Cloud のコンテンツで参照する一般的なロールとタスク例の詳細については、一般的な GKE Enterprise ユーザーロールとタスクをご覧ください。

概要

トポロジ ドメインは、キャンパスやデータセンターなど、同じ論理グループまたは物理グループの一部と見なされるクラスタノードのグループです。トポロジ ドメインは、関連する障害が発生する可能性のある基盤となるハードウェアまたはソフトウェアに対応している必要があります。次に例を示します。

  • ソフトウェア障害(vCenter Server が異なるなど)
  • ハードウェア障害(ラックの違い、電源の違い、建物の違いなど)

VMware 用 Google Distributed Cloud(ソフトウェアのみ)では、クラスタの作成時にトポロジ ドメインを設定する一環として、トポロジラベルを定義します。クラスタの作成後、トポロジラベルがトポロジ ドメイン内のノードのラベルに入力されます。

プレビュー版でトポロジ ドメインを使用するには、次のオプションがあります。

  • トポロジラベルのキーとして、Kubernetes クラスタレベルのデフォルト制約 "topology.kubernetes.io/zone" を使用します。詳細については、組み込みのデフォルト制約をご覧ください。

  • トポロジのラベルキーに応じて、Deployment、StatefulSet、または ReplicaSet の PodTemplate を構成します。Pod 仕様では、トポロジ ラベルのキーを topologySpreadConstraints.topologyKey フィールドの値として使用します。このキーにより、Kubernetes スケジューラはトポロジ ドメインに Pod を分散して、高可用性を確保し、障害が発生した場合に単一の領域に過度に集中するのを防ぎます。Pod 仕様で topologySpreadConstraints を構成する方法については、Kubernetes ドキュメントの Pod トポロジの分散の制約をご覧ください。

トポロジ ドメインラベルの例

ユーザー クラスタを作成するときに、次の 3 つのトポロジ ドメインを作成するとします。

...
topologyDomains:
- name: "topology-domain-1"
  topologyLabels:
    "topology.examplepetstore.com/zone": "zone-1"
...
...
topologyDomains:
- name: "topology-domain-2"
  topologyLabels:
    "topology.examplepetstore.com/zone": "zone-2"
...
...
topologyDomains:
- name: "topology-domain-3"
  topologyLabels:
    "topology.examplepetstore.com/zone": "zone-3"
...

クラスタの作成後に、Pod 仕様を更新します。次に例を示します。

...
topologySpreadConstraints:
  topologyKey: "topology.examplepetstore.com/zone"
...

概要として、Kubernetes スケジューラは topology.examplepetstore.com/zone を使用して、クラスタノードを zone-1zone-2zone-3 の異なるグループに分割します。その後、スケジューラはこれらの 3 つのノードグループに Pod を分散します。

トポロジ ドメインの設定に関するガイドライン

Kubernetes スケジューラがすべてのクラスタ リソースを効果的に使用できるようにするには、次のガイドラインに従うことをおすすめします。

  • トポロジ ドメインはバランスが取れている必要があります。各トポロジ ドメインにほぼ同量の CPU 容量と RAM 容量を用意する必要があります。
  • 少なくとも 2 つ、できれば 3 つのトポロジ ドメインを指定します。
  • 複数のトポロジ キーで分散しないでください。
  • 各トポロジ ドメイン内のノードのサイズは同じである必要があります。
  • クラスタ内のワークロード分離にtaint と toleration を使用する場合は、各ノードグループが前述の要件を満たしている必要があります。

これらのガイドラインが満たされていない場合、スケジューラはクラスタの全容量を使用することを試みますが、Pod のスケジュールに時間がかかることがあります。また、すべての Pod が想定どおりに分散されるわけではありません。

次のステップ