VM-Host Group アフィニティを構成する

このドキュメントでは、VM-Host アフィニティを使用するように GKE on VMware クラスタを構成する方法の例を示します。

VM-Host Group アフィニティは、GKE on VMware で高可用性を確保するための仕組みの一つです。VM-Host Group アフィニティを使用して、物理 ESXi ホストのグループを作成します。次に、VM グループをホストグループに関連付けるようにクラスタを構成します。

たとえば、1 つのノードプール内のすべての VM を特定のホストグループで実行するように構成できます。また、2 番目のノードプール内のすべての VM を別のホストグループで実行するように構成することもできます。各ノードプールを障害発生ドメインとして扱うことができます。障害発生ドメインを区別するために、さまざまなノードプール内の VM にラベルを追加できます。

準備

この演習では、vSphere 環境に少なくとも 6 つの ESXi ホストが必要です。

ホストグループを作成する

vSphere 環境で 2 つ以上のホスト DRS グループを作成します。この演習では、それぞれ 3 つのホストを持つ 2 つのホストグループが適切です。手順については、ホストの DRS グループの作成をご覧ください。

ユーザー クラスタの作成

このセクションでは、VM-Host Group アフィニティを使用するユーザー クラスタを作成する方法の例を示します。この例のクラスタでは Controlplane V2 を使用しています。クラスタには高可用性コントロール プレーンがあるため、コントロール プレーン ノードは 3 つあります。コントロール プレーン ノードに加えて、6 つのワーカーノードが(3 つは 1 つのノードプールに、3 つは 2 番目のノードプールに)あります。すべてのノードが静的 IP アドレスを使用します。

ユーザー クラスタを作成する(Controlplane V2)の手順に沿って操作します。

ユーザー クラスタの構成ファイルに次のように入力します。

  • ワーカーノード用に 2 つのノードプールを指定します。ノードプールごとに、replicas3 に設定し、既存のホストグループの名前を指定します。

例: 構成ファイル

次に、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)の説明に沿って、ユーザー クラスタの作成を続行します。