Affinität von VM-Hostgruppen konfigurieren

In diesem Dokument wird anhand eines Beispiels beschrieben, wie ein GKE on VMware-Cluster für die Verwendung der VM-Host-Affinität konfiguriert wird.

Die Affinität von VM-Hostgruppen ist einer der Mechanismen von GKE on VMware, um Hochverfügbarkeit zu gewährleisten. Mit der VM-Hostgruppen-Affinität erstellen Sie Gruppen physischer ESXi-Hosts. Anschließend konfigurieren Sie Ihren Cluster so, dass VM-Gruppen mit Hostgruppen verknüpft werden.

Sie können beispielsweise alle VMs in einem Knotenpool so konfigurieren, dass sie in einer bestimmten Hostgruppe ausgeführt werden. Außerdem könnten Sie alle VMs in einem zweiten Knotenpool so konfigurieren, dass sie in einer anderen Hostgruppe ausgeführt werden. Sie könnten dann jeden Knotenpool als Fehlerdomain behandeln. Um die Fehlerdomains zu unterscheiden, können Sie den VMs in den verschiedenen Knotenpools Labels hinzufügen.

Hinweise

Für diese Übung benötigen Sie mindestens sechs ESXi-Hosts in Ihrer vSphere-Umgebung.

Hostgruppen erstellen

Erstellen Sie zwei oder mehr Host-DRS-Gruppen in Ihrer vSphere-Umgebung. Für diese Übung eignen sich zwei Hostgruppen mit jeweils drei Hosts. Eine Anleitung finden Sie unter Host-DRS-Gruppe erstellen.

Nutzercluster erstellen

In diesem Abschnitt finden Sie ein Beispiel für das Erstellen eines Nutzerclusters, der die VM-Host-Gruppenaffinität verwendet. Der Cluster in diesem Beispiel verwendet Controlplane V2. Der Cluster hat eine Steuerungsebene mit Hochverfügbarkeit, sodass drei Knoten der Steuerungsebene vorhanden sind. Zusätzlich zu den Knoten der Steuerungsebene gibt es sechs Worker-Knoten: drei in einem Knotenpool und drei in einem zweiten Knotenpool. Alle Knoten verwenden statische IP-Adressen.

Folgen Sie zuerst der Anleitung unter Nutzercluster erstellen (Controlplane V2).

Beim Ausfüllen der Konfigurationsdatei des Nutzerclusters:

  • Geben Sie zwei Knotenpools für Worker-Knoten an. Legen Sie für jeden Knotenpool replicas auf 3 fest und geben Sie den Namen einer vorhandenen Hostgruppe an.

Beispiel: Konfigurationsdatei

Hier sehen Sie ein Beispiel für eine IP-Blockdatei und einen Teil einer Konfigurationsdatei für einen Nutzercluster.

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"
...

Dies sind die wichtigsten Punkte, die im vorherigen Beispiel zu verstehen sind:

  • Die statischen IP-Adressen für die Worker-Knoten werden in einer IP-Blockdatei angegeben. Die IP-Blockdatei hat sieben Adressen, obwohl nur sechs Worker-Knoten vorhanden sind. Die zusätzliche IP-Adresse wird während des Clusterupgrades, der Aktualisierung und der automatischen Reparatur des Clusters benötigt.

  • Die statischen IP-Adressen für die drei Knoten der Steuerungsebene werden im Abschnitt network.controlPlaneIPBlock der Konfigurationsdatei des Nutzerclusters angegeben. In diesem Block wird keine zusätzliche IP-Adresse benötigt.

  • Das Feld masterNode.replicas ist auf 3 gesetzt, sodass drei Knoten der Steuerungsebene vorhanden sind.

  • Ein Clustercontroller erstellt eine VM-DRS-Gruppe mit den drei Knoten im Knotenpool worker-pool-1. Ein Controller erstellt außerdem eine VM-Host-Affinitätsregel, die dafür sorgt, dass Knoten in worker-pool-1 auf Hosts in hostgroup-1 ausgeführt werden. Die Knoten in worker-pool-1 haben das Label failuredomain: "failuredomain-1"

  • Ein Clustercontroller erstellt eine VM-DRS-Gruppe mit den drei Knoten im Knotenpool worker-pool-2. Ein Controller erstellt außerdem eine VM-Host-Affinitätsregel, die dafür sorgt, dass Knoten in worker-pool-2 auf Hosts in hostgroup-2 ausgeführt werden. Die Knoten in worker-pool-2 haben das Label failuredomain: "failuredomain-2"

Fahren Sie mit der Erstellung des Nutzerclusters wie unter Nutzercluster erstellen (Controlplane V2) beschrieben fort.