配置虚拟机-主机组亲和性

本文档通过一个示例说明了如何将 Google Distributed Cloud 集群配置为使用虚拟机-主机亲和性

虚拟机-主机组亲和性是 Google Distributed Cloud 提供的用于确保高可用性的机制之一。借助虚拟机-主机组亲和性,您可以创建物理 ESXi 主机组。然后,配置集群以将虚拟机组与主机组相关联。

例如,您可以将一个节点池中的所有虚拟机配置为在特定主机组上运行。您可以将第二个节点池中的所有虚拟机配置为在其他主机组上运行。这样,您就可以将每个节点池视为故障域。如需区分故障网域,您可以为各个节点池中的虚拟机添加标签。

准备工作

在本练习中,您的 vSphere 环境中需要至少六个 ESXi 主机。

创建主机组

在 vSphere 环境中创建两个或更多主机 DRS 组。在本练习中,最好有两个主机组,每个主机组有三个主机。相关说明,请参阅创建主机 DRS 组

创建用户集群

本部分通过一个示例展示了如何创建使用虚拟机-主机组亲和性的用户集群。此示例中的集群使用控制平面 V2。该集群具有高可用性控制平面,因此有三个控制平面节点。除了控制平面节点之外,还有六个工作器节点:三个位于一个节点池中,三个位于第二个节点池中。所有节点均使用静态 IP 地址。

首先按照创建用户集群(控制平面 V2)中的说明执行操作。

填写用户集群配置文件时:

  • 为工作器节点指定两个节点池。对于每个节点池,将 replicas 设置为 3,并提供现有主机组的名称。

示例配置文件

以下是一个 IP 地址块文件和一个用户集群配置文件一部分的示例。

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

以下是在上述示例中要理解的要点:

  • 工作器节点的静态 IP 地址在 IP 地址块文件中指定。即使只有六个工作器节点,IP 地址块文件也包含七个地址。在集群升级、更新和自动修复期间需要额外的 IP 地址。

  • 三个控制平面节点的静态 IP 地址在用户集群配置文件的 network.controlPlaneIPBlock 部分中指定。此块中不需要额外的 IP 地址。

  • masterNode.replicas 字段设置为 3,因此将有三个控制平面节点。

  • 集群控制器将创建一个虚拟机 DRS 组,其中包含 worker-pool-1 节点池中的三个节点。控制器还将创建虚拟机-主机亲和性规则,以确保 worker-pool-1 中的节点将在 hostgroup-1 中的主机上运行。worker-pool-1 中的节点具有 failuredomain: "failuredomain-1" 标签

  • 集群控制器将创建一个虚拟机 DRS 组,其中包含 worker-pool-2 节点池中的三个节点。控制器还将创建虚拟机-主机亲和性规则,以确保 worker-pool-2 中的节点将在 hostgroup-2 中的主机上运行。worker-pool-2 中的节点具有 failuredomain: "failuredomain-2" 标签

继续按照创建用户集群 (Controlplane V2) 中所述创建用户集群。