Configurar la afinidad de grupos de VM-Host

En este documento se muestra un ejemplo de cómo configurar un clúster de Google Distributed Cloud para usar la afinidad VM-Host.

La afinidad de grupo de VM-host es uno de los mecanismos que proporciona Google Distributed Cloud para asegurar la alta disponibilidad. Con la afinidad de grupo de hosts de VM, puedes crear grupos de hosts ESXi físicos. A continuación, configura el clúster para asociar grupos de VMs con grupos de hosts.

Por ejemplo, puedes configurar todas las VMs de un grupo de nodos para que se ejecuten en un grupo de hosts concreto. También puedes configurar todas las VMs de un segundo grupo de nodos para que se ejecuten en otro grupo de hosts. De esta forma, cada grupo de nodos se consideraría un dominio de error. Para diferenciar los dominios de error, puedes añadir etiquetas a las máquinas virtuales de los distintos grupos de nodos.

No se admite el uso de la afinidad de grupos de hosts de VMs en clústeres avanzados.

Antes de empezar

Para este ejercicio, debe tener al menos seis hosts ESXi en su entorno de vSphere.

Crear grupos de hosts

Crea dos o más grupos de DRS de hosts en tu entorno de vSphere. Para este ejercicio, serían adecuados dos grupos de hosts con tres hosts cada uno. Para obtener instrucciones, consulta Crear un grupo DRS de hosts.

Crear clúster de usuarios

En esta sección se muestra un ejemplo de cómo crear un clúster de usuarios que utilice la afinidad de grupo de VM-Host. El clúster de este ejemplo usa Controlplane V2. El clúster tiene un plano de control de alta disponibilidad, por lo que hay tres nodos del plano de control. Además de los nodos del plano de control, hay seis nodos de trabajo: tres en un grupo de nodos y tres en otro. Todos los nodos usan direcciones IP estáticas.

Para empezar, sigue las instrucciones de Crear un clúster de usuarios.

Cuando rellenes el archivo de configuración del clúster de usuarios, ten en cuenta lo siguiente:

  • Especifica dos grupos de nodos para los nodos de trabajador. En cada grupo de nodos, asigna el valor replicas a 3 y proporciona el nombre de un grupo de hosts.

Ejemplo de archivo de configuración

A continuación, se muestra un ejemplo de un archivo de bloque de IPs y una parte de un archivo de configuración de clúster de usuarios.

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

Estos son los puntos importantes que debes tener en cuenta en el ejemplo anterior:

  • Las direcciones IP estáticas de los nodos de trabajador se especifican en un archivo de bloque de IPs. El archivo de bloqueo de IP tiene siete direcciones, aunque solo hay seis nodos de trabajo. La dirección IP adicional es necesaria durante la actualización del clúster, la actualización y la reparación automática.

  • Las direcciones IP estáticas de los tres nodos del plano de control se especifican en la sección network.controlPlaneIPBlock del archivo de configuración del clúster de usuario. No es necesario tener una dirección IP adicional en este bloque.

  • El campo masterNode.replicas se ha definido como 3, por lo que habrá tres nodos del plano de control.

  • Un controlador de clúster creará un grupo de DRS de VM que tenga los tres nodos del grupo de nodos worker-pool-1. Un controlador también creará una regla de afinidad entre VM y host que asegure que los nodos de worker-pool-1 se ejecuten en hosts de hostgroup-1. Los nodos de worker-pool-1 tienen la etiqueta failuredomain: "failuredomain-1"

  • Un controlador de clúster creará un grupo de DRS de VM que tenga los tres nodos del grupo de nodos worker-pool-2. Un controlador también creará una regla de afinidad VM-Host que asegure que los nodos de worker-pool-2 se ejecuten en hosts que estén en hostgroup-2. Los nodos de worker-pool-2 tienen la etiqueta failuredomain: "failuredomain-2"

Sigue creando el clúster de usuarios tal como se describe en Crear un clúster de usuarios.