Configura la afinidad de grupo de VM-host

En este documento, se muestra un ejemplo de cómo configurar un clúster de GKE en VMware para usar la afinidad de VM y host.

La afinidad de grupos de VM-host es uno de los mecanismos que proporciona GKE on VMware para garantizar una alta disponibilidad. Con la afinidad de grupo de VM-Host, puedes crear grupos de hosts ESXi físicos. Luego, configuras el clúster para asociar los grupos de VM con grupos de host.

Por ejemplo, puedes configurar todas las VM en un grupo de nodos para que se ejecuten en un grupo de host en particular. Además, puedes configurar todas las VM en un segundo grupo de nodos para que se ejecuten en un grupo de host diferente. Luego, podrías tratar cada grupo de nodos como un dominio con fallas. Para diferenciar los dominios con fallas, puedes agregar etiquetas a las VM en los diferentes grupos de nodos.

Antes de comenzar

Para este ejercicio, debes tener al menos seis hosts ESXi en el entorno de vSphere.

Crear grupos de host

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

Crea un clúster de usuario

En esta sección, se muestra un ejemplo de cómo crear un clúster de usuario que usa la afinidad de grupo VM-Host. El clúster de este ejemplo usa el plano de control 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 trabajadores: tres en un grupo de nodos y tres en un segundo grupo de nodos. Todos los nodos usan direcciones IP estáticas.

Para comenzar, sigue las instrucciones en Crea un clúster de usuario (Plano de control V2).

A medida que completes el archivo de configuración del clúster de usuario, sucederá lo siguiente:

  • Especifica dos grupos de nodos para los nodos trabajadores. Para cada grupo de nodos, configura replicas como 3 y proporciona el nombre de un grupo de host existente.

Archivo de configuración de ejemplo

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

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 comprender en el ejemplo anterior:

  • Las direcciones IP estáticas de los nodos trabajadores se especifican en un archivo de bloque de IP. El archivo de bloque de IP tiene siete direcciones, aunque solo haya seis nodos trabajadores. La dirección IP adicional se necesita durante la actualización del clúster 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 hay necesidad de una dirección IP adicional en este bloque.

  • El campo masterNode.replicas se estableció en 3, por lo que habrá tres nodos del plano de control.

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

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

Continúa creando tu clúster de usuario como se describe en Crea un clúster de usuario (Plano de control V2).