Configurer l'affinité de groupe VM-hôte

Ce document donne un exemple de configuration d'un cluster Google Distributed Cloud pour utiliser l'affinité VM-hôte.

L'affinité entre les groupes VM et hôtes est l'un des mécanismes fournis par Google Distributed Cloud pour garantir la haute disponibilité. Avec l'affinité de groupe VM-hôte, vous créez des groupes d'hôtes ESXi physiques. Vous configurerez ensuite votre cluster pour associer des groupes de VM à des groupes d'hôtes.

Par exemple, vous pouvez configurer toutes les VM d'un pool de nœuds pour qu'elles s'exécutent sur un groupe d'hôtes particulier. De plus, vous pouvez configurer toutes les VM d'un deuxième pool de nœuds pour qu'elles s'exécutent sur un groupe hôte différent. Vous pouvez ensuite traiter chaque pool de nœuds comme un domaine de défaillance. Pour différencier les domaines de défaillance, vous pouvez ajouter des étiquettes aux VM dans les différents pools de nœuds.

Avant de commencer

Pour cet exercice, vous devez disposer d'au moins six hôtes ESXi dans votre environnement vSphere.

Créer des groupes hôtes

Créez au moins deux groupes DRS hôtes dans votre environnement vSphere. Pour cet exercice, deux groupes hôtes avec trois hôtes chacun seraient appropriés. Pour obtenir des instructions, consultez la section Créer un groupe DRS hôte.

Créer un cluster d'utilisateur

Cette section donne un exemple de création d'un cluster d'utilisateur utilisant l'affinité de groupe d'hôtes VM. Dans cet exemple, le cluster utilise le plan de contrôle V2. Le cluster comporte un plan de contrôle à haute disponibilité. Il existe donc trois nœuds de plan de contrôle. En plus des nœuds du plan de contrôle, il existe six nœuds de calcul: trois dans un pool de nœuds et trois dans un deuxième pool de nœuds. Tous les nœuds utilisent des adresses IP statiques.

Commencez par suivre les instructions de la section Créer un cluster d'utilisateur (Controlplane V2).

Lorsque vous remplissez le fichier de configuration de votre cluster d'utilisateur :

  • Spécifiez deux pools de nœuds pour les nœuds de calcul. Pour chaque pool de nœuds, définissez replicas sur 3, puis indiquez le nom d'un groupe hôtes existant.

Exemple de fichier de configuration

Voici un exemple de fichier de bloc d'adresses IP et de partie d'un fichier de configuration de cluster d'utilisateur.

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

Voici les points importants à comprendre dans l'exemple précédent :

  • Les adresses IP statiques des nœuds de calcul sont spécifiées dans un fichier de bloc d'adresses IP. Le fichier de blocs d'adresses IP comporte sept adresses, alors qu'il n'y a que six nœuds de calcul. L'adresse IP supplémentaire est nécessaire lors de la mise à niveau, de la mise à jour et de la réparation automatique du cluster.

  • Les adresses IP statiques des trois nœuds de plan de contrôle sont spécifiées dans la section network.controlPlaneIPBlock du fichier de configuration du cluster d'utilisateur. Aucune adresse IP supplémentaire n'est nécessaire dans ce bloc.

  • Le champ masterNode.replicas est défini sur 3. Il y aura donc trois nœuds du plan de contrôle.

  • Un contrôleur de cluster crée un groupe de VM DRS comportant les trois nœuds du pool de nœuds worker-pool-1. Un contrôleur crée également une règle d'affinité VM-hôte qui garantit que les nœuds de worker-pool-1 seront exécutés sur des hôtes situés dans hostgroup-1. Les nœuds de la région worker-pool-1 sont associés à l'étiquette failuredomain: "failuredomain-1"

  • Un contrôleur de cluster crée un groupe de VM DRS comportant les trois nœuds du pool de nœuds worker-pool-2. Un contrôleur crée également une règle d'affinité VM-hôte qui garantit que les nœuds de worker-pool-2 seront exécutés sur des hôtes situés dans hostgroup-2. Les nœuds de la région worker-pool-2 sont associés à l'étiquette failuredomain: "failuredomain-2"

Continuez à créer votre cluster d'utilisateur comme décrit dans la section Créer un cluster d'utilisateur (Controlplane V2).