为 VMware vSphere 集群准备参数
本文档可帮助你收集从 global 集群创建 VMware vSphere 业务集群所需的各项值。在应用 在 global 集群中创建集群 中的 manifests 之前,请先完成此检查清单。
目录
场景前提条件如何使用此检查清单术语machine config poolNode slotSlot network layoutdeviceNamevCenter resource poolCompute clusterDatastoreVM templateThumbprintManagement Cluster 前提条件vCenter 和 Template 前提条件vCenter 连接信息VM template 要求Load Balancer 前提条件集群基线参数最小单数据中心参数数据中心和资源放置Primary NIC 参数控制平面 machine config poolWorker machine config pool计算资源规格标准 data diskPersistent disk 字段控制平面节点(每个节点 3 块磁盘)Worker 节点(每个节点 2 块磁盘)大小参数vSphere CPI 参数可选扩展参数多数据中心和多个 failure domain第二个 NIC 参数最终就绪检查下一步场景
请在以下场景中使用此检查清单:
- 你正在准备一个新的 VMware vSphere 集群部署。
- 你希望在开始部署之前验证外部依赖。
- 你计划启用扩展场景,例如多个数据中心、多个 NIC 或额外的 worker 节点。
前提条件
开始之前,请确保满足以下条件:
- 你可以使用
kubectl访问global集群。 - 业务集群对象必须存储在
cpaas-systemnamespace 中。 - 你可以访问目标 vCenter 的 inventory、网络、datastore 和 template。
如何使用此检查清单
请按以下顺序使用此检查清单:
- 收集本文档中列出的部署参数。
- 将 manifest templates 中的每个占位符替换为此处收集到的实际值。
- 在多个 manifest 中出现同一占位符时,所有位置都复用相同的值。
- 如果未启用某个可选功能,请按照扩展文档中的说明精确移除对应的 YAML block。
- 如果某个可选字段(例如
deviceName)不需要,请从 YAML manifest 中删除整行。
术语
以下术语在 VMware vSphere 集群创建文档中始终保持一致。
machine config pool
machine config pool 是 VSphereMachineConfigPool 自定义资源。它预定义了 node slot。每个 slot 可包含:
- node hostname
- 目标 datacenter
- 每个 NIC 的静态 IP 配置
- 持久磁盘定义
每个 VSphereMachineConfigPool 只能被一个 KubeadmControlPlane 或一个 MachineDeployment 引用。不要在多个控制平面或 worker 组之间共享同一个 VSphereMachineConfigPool。如果某个 pool 已绑定到其他 consumer,VSphereMachine 将报告 MachineConfigPoolReady=False 条件,原因是 PoolBoundToOtherConsumer。
Node slot
node slot 是 VSphereMachineConfigPool.spec.configs[] 下的一条记录。单个 slot 通常映射到一个 node,例如 cp-01 或 worker-01。slot 的 hostname 会驱动 Kubernetes node 名称、kubelet serving certificate 的 DNS SAN,以及(结合解析后的 primary NIC 地址)kubelet 的 node-ip;它必须是有效的 DNS-1123 子域。
Slot network layout
每个 slot 都会在 network.primary 和 network.additional 下声明其 NIC 布局:
network.primary为必填项。其networkName必须设置,并用作 kubelet 的 node-ip 来源。network.additional是一个可选的额外 NIC 列表,按列出的顺序在 primary NIC 之后合并。
deviceName
deviceName 是 VSphereMachineConfigPool 网络配置中的可选字段。它用于控制 guest operating system 内部看到的 NIC 名称,例如 eth0 或 eth1。
填写这些值时,请注意以下区别:
networkName是 vCenter 网络或 port group 名称。deviceName是 guest operating system 内部的 NIC 名称。- 如果省略
deviceName,CAPV 通常会按 NIC 顺序分配eth0、eth1和eth2等名称。
vCenter resource pool
vCenter resource pool 是原生 vCenter inventory 对象,例如:
在扩展场景中,此路径由 VSphereDeploymentZone.spec.placementConstraint.resourcePool 使用。
Compute cluster
compute cluster 是目标 vCenter compute-cluster 的名称。在本文档中,它主要在将 VSphereFailureDomain 映射到特定部署目标时使用。
Datastore
datastore 是 vSphere 存储位置,用于存放 VM 磁盘。系统磁盘和数据磁盘都必须放置在具体的 datastore 上。
VM template
VM template 是用于创建 node virtual machine 的源 template。在启用多个数据中心时,同一个 template 必须已经存在于每个目标 datacenter 中,并且能够通过相同的 template 名称解析到。
Thumbprint
thumbprint 是 vCenter server certificate 的 SHA-1 指纹。CAPV 使用它来验证目标 vCenter server。
使用以下命令获取它:
Management Cluster 前提条件
使用下表记录所需的值和验证结果。
vCenter 和 Template 前提条件
vCenter 连接信息
说明: 这些文档假定 vCenter HTTPS 默认端口为 443。
VM template 要求
template 还应满足以下要求:
- 使用平台镜像策略支持的操作系统。
- 包含
cloud-init。 - 包含 VMware Tools 或
open-vm-tools。 - 包含
containerd。 - 包含 kubeadm bootstrap 所需的基础组件。
- 在
/root/images/下包含预先导出的 container image 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 前提条件
control plane VIP 由你在集群创建前预先配置的外部 load balancer 提供。本文档所述的 vSphere 流程不会在集群内部署 VIP 组件,因此 load balancer、其 VIP 分配以及后端(real-server)维护都在集群外部准备并由外部负责。
集群基线参数
最小单数据中心参数
数据中心和资源放置
Primary NIC 参数
控制平面 machine config pool
Worker machine config pool
计算资源规格
标准 data disk
每个 node 角色都需要一组专用 data disk。下表列出的磁盘是最低必需磁盘。如果 workload 需要,你可以继续在 persistentDisks 列表中追加更多磁盘。
Persistent disk 字段
控制平面节点(每个节点 3 块磁盘)
Worker 节点(每个节点 2 块磁盘)
大小参数
vSphere CPI 参数
可选扩展参数
多数据中心和多个 failure domain
第二个 NIC 参数
最终就绪检查
在开始部署之前,请确认以下所有项目:
global集群可达。- 确认两个 cluster plugins 已安装:Alauda Container Platform Kubeadm Provider 和 Alauda Container Platform VMware vSphere Infrastructure Provider。
- 已启用
ClusterResourceSet=true。 - 已收集 vCenter server、username、password 和 thumbprint。
- control plane VIP、load balancer 和端口
6443已准备就绪。 - Pod CIDR、Service CIDR 和
kube-ovn-join-cidr与现有网络不重叠。 - VM template 在每个必需的数据中心中都可用。
- 已确认所需的 datastore 和 vCenter resource pool 路径。
- 最小单数据中心拓扑所需的 machine config pool 值已完整。
- 已确认基线系统磁盘和 data disk 的大小。
- 每个必需参数都已填写真实值。
下一步
完成此检查清单后,请继续查看 在 global 集群中创建集群。