En este documento, se ofrece un ejemplo de cómo configurar un clúster de Google Distributed Cloud para usar la afinidad de VM-host.
La afinidad de grupo de host y VM es uno de los mecanismos que proporciona Google Distributed Cloud para garantizar una alta disponibilidad. Con la afinidad de grupo de host y VM, creas grupos de hosts ESXi físicos. Luego, configura tu clúster para asociar 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 hosts 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. Entonces, podrías tratar cada grupo de nodos como un dominio con fallas. Para diferenciar los dominios con fallas, puedes agregar etiquetas a las VMs en los distintos grupos de nodos.
Antes de comenzar
Para este ejercicio, debes tener al menos seis hosts ESXi en el entorno de vSphere.
Crea grupos host
Crea dos o más grupos de DRS del host en tu entorno de vSphere. Para este ejercicio, dos grupos de host con tres hosts cada uno serían apropiados. 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 use la afinidad de grupo de host y VM. 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 de 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.
Comienza por seguir las instrucciones que se indican en Crea un clúster de usuario (Controlplane V2).
A medida que completes el archivo de configuración del clúster de usuario, haz lo siguiente:
- Especifica dos grupos de nodos para los nodos trabajadores. Para cada grupo de nodos, establece
replicas
en3
y proporciona el nombre de un grupo de host existente.
Archivo de configuración de ejemplo
Este es 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 para 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 para 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 se necesita una dirección IP adicional en este bloque.El campo
masterNode.replicas
se establece en3
, 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 en el grupo de nodos
worker-pool-1
. Un controlador también creará una regla de afinidad de VM-host que garantiza que los nodos deworker-pool-1
se ejecuten en hosts que están enhostgroup-1
. Los nodos enworker-pool-1
tienen la etiquetafailuredomain: "failuredomain-1"
.Un controlador de clúster creará un grupo de DRS de VM que tenga los tres nodos en el grupo de nodos
worker-pool-2
. Un controlador también creará una regla de afinidad de VM-host que garantiza que los nodos deworker-pool-2
se ejecuten en hosts que están enhostgroup-2
. Los nodos enworker-pool-2
tienen la etiquetafailuredomain: "failuredomain-2"
.
Continúa con la creación de tu clúster de usuario como se describe en Crea un clúster de usuario (Controlplane V2).