Configurar a afinidade de grupo de host de VM

Neste documento, apresentamos um exemplo de como configurar um cluster do Google Distributed Cloud para usar a afinidade de host de VM.

A afinidade do grupo VM-Host é um dos mecanismos que o Google Distributed Cloud oferece para garantir alta disponibilidade. Com a afinidade de grupo do VM-host, você cria grupos de hosts físicos ESXi. Em seguida, configure o cluster para associar grupos de VMs a grupos de hosts.

Por exemplo, é possível configurar todas as VMs em um pool de nós para serem executadas em um determinado grupo de hosts. Também é possível configurar todas as VMs em um segundo pool de nós para serem executadas em um grupo de hosts diferente. Em seguida, trate cada pool de nós como um domínio de falha. Para diferenciar os domínios de falha, adicione rótulos às VMs nos vários pools de nós.

Antes de começar

Para este exercício, você precisa ter pelo menos seis hosts ESXi no ambiente do vSphere.

Criar grupos de host

Crie dois ou mais grupos de DRS de host no seu ambiente do vSphere. Para este exercício, dois grupos de hosts com três hosts cada seriam apropriados. Para mais instruções, consulte Criar um grupo de DRS do host.

Criar um cluster de usuário

Nesta seção, você verá um exemplo de como criar um cluster de usuário que usa a afinidade de grupo do VM-host. O cluster neste exemplo usa o Controlplane V2. O cluster tem um plano de controle de alta disponibilidade, portanto, há três nós do plano de controle. Além dos nós do plano de controle, há seis nós de trabalho: três em um pool de nós e três em um segundo pool de nós. Todos os nós usam endereços IP estáticos.

Comece seguindo as instruções em Criar um cluster de usuário (Controlplane V2).

Durante o preenchimento do arquivo de configuração do cluster de usuário:

  • Especifique dois pools de nós para workers. Para cada pool de nós, defina replicas como 3 e forneça o nome de um grupo de hosts.

Exemplo: arquivo de configuração

Veja um exemplo de um arquivo de bloco de IP e uma parte de um arquivo de configuração de cluster de usuário.

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

Estes são os pontos importantes que você precisa entender no exemplo anterior:

  • Os endereços IP estáticos dos nós de trabalho são especificados em um arquivo de bloco de IP. O arquivo de bloco de IP tem sete endereços, mesmo que haja apenas seis nós de trabalho. O endereço IP extra é necessário durante o upgrade, a atualização e o reparo automático do cluster.

  • Os endereços IP estáticos dos três nós do plano de controle são especificados na seção network.controlPlaneIPBlock do arquivo de configuração do cluster de usuário. Não é necessário ter um endereço IP extra neste bloco.

  • O campo masterNode.replicas está definido como 3, então haverá três nós do plano de controle.

  • Um controlador de cluster criará um grupo de DRS de VM que tem os três nós no pool de nós worker-pool-1. Um controlador também criará uma regra de afinidade de VM-host que garante que os nós em worker-pool-1 sejam executados em hosts que estão em hostgroup-1. Os nós em worker-pool-1 têm o rótulo failuredomain: "failuredomain-1"

  • Um controlador de cluster criará um grupo de DRS de VM que tem os três nós no pool de nós worker-pool-2. Um controlador também criará uma regra de afinidade de VM-host que garante que os nós em worker-pool-2 sejam executados em hosts em hostgroup-2. Os nós em worker-pool-2 têm o rótulo failuredomain: "failuredomain-2"

Continue criando o cluster de usuário conforme descrito em Criar um cluster de usuário (Controlplane V2).