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

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

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

例如,您可以将一个节点池中的所有虚拟机配置为在特定主机群组上运行。您还可以将第二个节点池中的所有虚拟机配置为在不同的主机组中运行。然后,您可以将每个节点池视为故障域。为了区分故障域,您可以为各个节点池中的虚拟机添加标签。

准备工作

在本练习中,您的 vSphere 环境中至少需要有 6 台 ESXi 主机。

创建主机组

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

创建用户集群

本部分举例说明了如何创建使用虚拟机-主机组亲和性的用户集群。此示例中的集群使用 Controlplane 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,因此将有三个控制平面节点。

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

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

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