このドキュメントでは、VM ホスト アフィニティを使用するように Google Distributed Cloud クラスタを構成する方法の例を示します。
VM-Host Group アフィニティは、Google Distributed Cloud で高可用性を確保するための仕組みの一つです。VM-Host Group アフィニティを使用して、物理 ESXi ホストのグループを作成します。次に、VM グループをホストグループに関連付けるようにクラスタを構成します。
たとえば、1 つのノードプール内のすべての VM を特定のホストグループで実行するように構成できます。2 番目のノードプール内のすべての VM を、別のホストグループで実行するように構成できます。各ノードプールを障害発生ドメインとして扱うことができます。障害発生ドメインを区別するためには、さまざまなノードプール内の VM にラベルを追加します。
始める前に
この演習では、vSphere 環境に ESXi ホストを 6 台以上用意する必要があります。
ホストグループを作成する
vSphere 環境で 2 つ以上のホスト DRS グループを作成します。この演習では、それぞれ 3 つのホストを持つ 2 つのホストグループが適切です。手順については、ホストの DRS グループを作成するをご覧ください。
ユーザー クラスタを作成する
このセクションでは、VM-Host Group アフィニティを使用するユーザー クラスタを作成する方法の例を示します。この例のクラスタでは Controlplane V2 を使用しています。クラスタには高可用性コントロール プレーンがあるため、コントロール プレーン ノードは 3 つあります。コントロール プレーン ノードに加えて、6 つのワーカーノードが(3 つは 1 つのノードプールに、3 つは 2 番目のノードプールに)あります。すべてのノードが静的 IP アドレスを使用します。
ユーザー クラスタを作成する(Controlplane V2)の手順に沿って操作します。
ユーザー クラスタの構成ファイルに次のように入力します。
- ワーカーノードに 2 つのノードプールを指定します。ノードプールごとに、
replicas
を3
に設定し、既存のホストグループの名前を指定します。
構成ファイルの例
次に、IP ブロック ファイルとユーザー クラスタ構成ファイルの一部の例を示します。
user-ipblock.yaml
blocks: - netmask: 255.255.255.0 gateway: 172.16.21.1 ips: - ip: 172.16.21.2 - ip: 172.16.21.3 - ip: 172.16.21.4 - ip: 172.16.21.5 - ip: 172.16.21.6 - ip: 172.16.21.7 - ip: 172.16.21.8
user-cluster-yaml
apiVersion: v1 kind: UserCluster ... network: hostConfig: dnsServers: - "203.0.113.2" - "198.51.100.2" ntpServers: - "216.239.35.4" ipMode: type: "static" ipBlockFilePath: "user-ipblock.yaml" controlPlaneIPBlock: netmask: "255.255.255.0" gateway: "172.16.21.1" ips: - ip: "172.16.21.9" hostname: "cp-vm-1" - ip: "172.16.21.10" hostname: "cp-vm-2" - ip: "172.16.21.11" hostname: "cp-vm-3" loadBalancer: vips: controlPlaneVIP: "172.16.21.40" ingressVIP: "172.16.21.30" kind: MetalLB metalLB: addressPools: - name: "address-pool-1" addresses: - "172.16.21.30-172.16.21.39" ... enableControlplaneV2: true masterNode: cpus: 4 memoryMB: 8192 replicas: 3 nodePools: - name: "worker-pool-1" enableLoadBalancer: true replicas: 3 vsphere: hostgroups: - "hostgroup-1" labels: failuredomain: "failuredomain-1" - name: "worker-pool-2" replicas: 3 vsphere: hostgroups: - "hostgroup-2" labels: failuredomain: "failuredomain-2" ...
上記の例で理解しておくべき重要なポイントは、次のとおりです。
ワーカーノードの静的 IP アドレスは、IP ブロック ファイルに指定されています。IP ブロック ファイルには、ワーカーノードが 6 つしかなくてもアドレスが 7 つあります。その追加の IP アドレスは、クラスタのアップグレード、更新、自動修復に必要なものです。
コントロール プレーン ノード 3 つの静的 IP アドレスは、ユーザー クラスタ構成ファイルの
network.controlPlaneIPBlock
セクションで指定されます。このブロックでは、追加の IP アドレスは必要ありません。masterNode.replicas
フィールドが3
に設定されているため、コントロール プレーン ノードは 3 つになります。クラスタ コントローラは、
worker-pool-1
ノードプール内に 3 つのノードを持つ VM DRS グループを作成します。コントローラは、worker-pool-1
のノードがhostgroup-1
のホストで実行されるようにする VM-Host アフィニティ ルールも作成します。worker-pool-1
のノードにはfailuredomain: "failuredomain-1"
というラベルが付いています。クラスタ コントローラは、
worker-pool-2
ノードプール内に 3 つのノードを持つ VM DRS グループを作成します。コントローラは、worker-pool-2
のノードがhostgroup-2
のホストで実行されるようにする VM-Host アフィニティ ルールも作成します。worker-pool-2
のノードにはfailuredomain: "failuredomain-2"
というラベルが付いています。
ユーザー クラスタを作成する(Controlplane V2)の説明に沿って、ユーザー クラスタの作成を続行します。