为 VMware vSphere 集群准备参数
本文档帮助你收集从 global 集群创建 VMware vSphere 业务集群所需的值。在你应用 在 global 集群中创建集群 中的清单之前,请先完成此检查表。
目录
场景前提条件如何使用此检查表术语machine config pool节点槽位槽位网络布局deviceNamevCenter 资源池计算集群DatastoreVM 模板ThumbprintManagement Cluster 前提条件vCenter 和模板前提条件vCenter 连接信息VM 模板要求Load Balancer 前提条件集群基线参数最小单数据中心参数数据中心和资源放置主 NIC 参数控制平面 machine config poolWorker machine config pool计算资源规格标准数据盘持久磁盘字段控制平面节点(每个节点 3 个磁盘)Worker 节点(每个节点 2 个磁盘)大小参数vSphere CPI 参数可选扩展参数多数据中心和多个故障域第二个 NIC 参数最终就绪检查后续步骤场景
在以下场景中使用此检查表:
- 你正在准备一个新的 VMware vSphere 集群部署。
- 你希望在开始部署前验证外部依赖。
- 你计划启用扩展场景,例如多个数据中心、多个 NIC 或额外的 worker 节点。
前提条件
在开始之前,请确保满足以下条件:
- 你可以使用
kubectl访问global集群。 - 业务集群对象必须存储在
cpaas-system命名空间中。 - 你可以访问目标 vCenter 的 inventory、网络、datastore 和模板。
如何使用此检查表
请按以下顺序使用此检查表:
- 收集本文档中列出的部署参数。
- 将清单模板中的每个占位符替换为此处收集到的实际值。
- 在多个清单中重复出现的占位符位置复用同一个值。
- 如果未启用某个可选功能,请严格按照扩展文档中的说明删除对应的 YAML 块。
- 如果某个可选字段(例如
deviceName)不需要,请从 YAML 清单中删除整行。
术语
在 VMware vSphere 集群创建文档中,以下术语始终保持一致。
machine config pool
machine config pool 是 VSphereMachineConfigPool 自定义资源。它预先定义了节点槽位。每个槽位可以包含:
- 节点主机名
- 目标数据中心
- 每个 NIC 的静态 IP 配置
- 持久磁盘定义
每个 VSphereMachineConfigPool 只能被一个 KubeadmControlPlane 或一个 MachineDeployment 引用。不要在多个控制平面或 worker 组之间共享同一个 VSphereMachineConfigPool。如果某个 pool 已绑定到其他消费者,VSphereMachine 将报告 MachineConfigPoolReady=False 状态,原因是 PoolBoundToOtherConsumer。
节点槽位
节点槽位是 VSphereMachineConfigPool.spec.configs[] 下的一项条目。单个槽位通常对应一个节点,例如 cp-01 或 worker-01。槽位的 hostname 会驱动 Kubernetes 节点名称、kubelet serving certificate 的 DNS SAN,以及(结合解析后的主 NIC 地址)kubelet 的 node-ip;它必须是合法的 DNS-1123 子域名。
槽位网络布局
每个槽位会在 network.primary 和 network.additional 下声明其 NIC 布局:
network.primary是必需项。必须设置其networkName,并将其作为 kubelet 的node-ip来源。network.additional是一个可选的额外 NIC 列表,会按照列表顺序在主 NIC 之后合并。
deviceName
deviceName 是 VSphereMachineConfigPool 网络配置中的一个可选字段。它用于控制客户机操作系统内部看到的 NIC 名称,例如 eth0 或 eth1。
填写这些值时,请注意以下区别:
networkName是 vCenter 网络或端口组名称。deviceName是客户机操作系统内部的 NIC 名称。- 如果省略
deviceName,CAPV 通常会按照 NIC 顺序分配eth0、eth1和eth2等名称。
vCenter 资源池
vCenter 资源池是 vCenter 原生的 inventory 对象,例如:
在扩展场景中,此路径由 VSphereDeploymentZone.spec.placementConstraint.resourcePool 使用。
计算集群
计算集群是目标 vCenter compute-cluster 的名称。在本文档中,它主要用于将 VSphereFailureDomain 映射到特定的部署目标时。
Datastore
Datastore 是 vSphere 存储位置,用于存放 VM 磁盘。系统盘和数据盘都必须放置在具体的 datastore 上。
VM 模板
VM 模板是用于创建节点虚拟机的源模板。当你启用多个数据中心时,同一个模板必须已经存在于每个目标数据中心中,并且能够通过相同的模板名称解析。
Thumbprint
Thumbprint 是 vCenter server certificate 的 SHA-1 指纹。CAPV 使用它来验证目标 vCenter server。
使用以下命令获取它:
Management Cluster 前提条件
使用下表记录所需值和校验结果。
vCenter 和模板前提条件
vCenter 连接信息
注意:本文档假设 vCenter HTTPS 默认端口为 443。
VM 模板要求
模板还应满足以下要求:
- 使用你的平台镜像策略支持的操作系统。
- 包含
cloud-init。 - 包含 VMware Tools 或
open-vm-tools。 - 包含
containerd。 - 包含 kubeadm bootstrap 所需的基础组件。
- 在
/root/images/下包含预先导出的容器镜像 tar 文件。这些文件会在 kubeadm 运行之前由capv-load-local-images.sh导入到 containerd 中,从而使节点引导不依赖从远程 registry 拉取镜像。 /root/images/*.tar文件必须包含 sandbox(pause)镜像,并且其引用必须与/etc/containerd/config.toml中配置的sandbox_image值(containerd v1)或sandbox值(containerd v2)完全一致。例如,如果 containerd 配置为sandbox_image = "registry.example.com/tkestack/pause:3.10",则某个 tar 文件中必须包含该完全一致的镜像引用。不匹配会导致 containerd 从网络拉取 sandbox 镜像,这会破坏本地预加载的目的,并在 air-gapped 环境中失败。
Load Balancer 前提条件
集群基线参数
最小单数据中心参数
数据中心和资源放置
主 NIC 参数
控制平面 machine config pool
Worker machine config pool
计算资源规格
标准数据盘
每个节点角色都需要一组专用数据盘。下列列出的磁盘是最低必需磁盘。如果你的工作负载需要,可以在 persistentDisks 列表中追加更多磁盘。
持久磁盘字段
控制平面节点(每个节点 3 个磁盘)
Worker 节点(每个节点 2 个磁盘)
大小参数
vSphere CPI 参数
可选扩展参数
多数据中心和多个故障域
第二个 NIC 参数
最终就绪检查
在开始部署之前,请确认以下所有项:
global集群可达。- 确认已安装两个集群插件:Alauda Container Platform Kubeadm Provider 和 Alauda Container Platform VMware vSphere Infrastructure Provider。
- 已启用
ClusterResourceSet=true。 - 已收集 vCenter server、username、password 和 thumbprint。
- 控制平面 VIP、load balancer 和
6443端口已就绪。 - Pod CIDR、Service CIDR 和
kube-ovn-join-cidr不与现有网络重叠。 - VM 模板已在每个必需的数据中心中可用。
- 已确认所需的 datastore 和 vCenter 资源池路径。
- 最小单数据中心拓扑的 machine config pool 值已完整填写。
- 已确认基线系统盘和数据盘的大小。
- 每个必填参数都已填写实际值。
后续步骤
完成此检查表后,请继续执行 在 global 集群中创建集群。