管理 VMware vSphere 上的节点
本文档说明在基础集群运行后,如何管理 VMware vSphere 上的 worker 节点。节点生命周期操作通过 VSphereMachineConfigPool、VSphereMachineTemplate、KubeadmConfigTemplate 和 MachineDeployment 资源进行管理。
前提条件
开始之前,请确保满足以下条件:
- 业务集群已成功创建。请参见 在 VMware vSphere 上创建集群。
- worker machine config pool 有足够的可用 slot。
- 控制平面运行正常且可访问。
- 你知道当前定义 worker 节点的 manifest 文件。
步骤
扩容 worker 节点
当你添加更多 worker 节点时,请先更新 worker machine config pool,再增加 replica 数量。
- 向
03-vspheremachineconfigpool-worker.yaml中添加一个或多个新的节点 slot。 - 更新
30-workers-md-0.yaml中的replicas。 - 应用更新后的 manifest。
请按以下顺序执行:
注意: 如果 MachineDeployment.spec.replicas 大于 VSphereMachineConfigPool.spec.configs[] 中可用 slot 的数量,则无法正确分配新的 worker 节点。
部署更新后的 worker 节点配置
当你需要更改 worker VM 规格时,请创建一个新的 VSphereMachineTemplate 并更新 MachineDeployment 以引用它。这会触发滚动更新,用新的配置替换 worker 节点。
模板不可变
VSphereMachineTemplate 资源不能原地修改。你必须创建一个新名称的模板,并更新 MachineDeployment 中的引用。更多信息请参阅 Cluster API 文档。
常见变更包括:
- VM 模板名称 (
spec.template.spec.template) - CPU 或内存规格 (
numCPUs,memoryMiB) - 系统磁盘或数据磁盘布局 (
diskGiB,dataDisks)
-
导出现有模板
-
修改模板
编辑
new-worker-template.yaml:- 将
metadata.name设置为一个新的唯一名称(例如,<cluster_name>-worker-v2) - 更新所需的规范字段
- 删除服务器生成的字段:
metadata.resourceVersion、metadata.uid、metadata.generation、metadata.creationTimestamp、metadata.managedFields、metadata.annotations["kubectl.kubernetes.io/last-applied-configuration"]和status
- 将
-
应用新模板
-
更新 MachineDeployment 引用
如果你还需要更改 bootstrap 设置,请参见下方的 更新 Bootstrap 模板。
-
监控滚动更新
回滚失败的更新
如果滚动更新失败(例如,新 VM 启动失败),请将 MachineDeployment 的引用恢复为之前的模板名称。旧模板仍然存在,Cluster API 会回滚到该模板。
验证 worker 节点状态
运行以下命令,验证 management-cluster 和 workload-cluster 的状态:
确认以下结果:
- 已达到目标 worker replica 数量。
- 每个新的 worker 节点都已加入集群。
- 节点最终变为
Ready。
更新 Bootstrap 模板
KubeadmConfigTemplate 资源同样是不可变的。对现有模板的修改不会触发已有机器的滚动更新。要更新 bootstrap 配置,请创建一个新模板,并更新 MachineDeployment 中的引用。
-
导出现有模板
-
修改模板
编辑
new-bootstrap-template.yaml:- 将
metadata.name设置为一个新的唯一名称(例如,<cluster_name>-worker-bootstrap-v2) - 更新所需的 bootstrap 配置字段
- 删除在 部署更新后的 worker 节点配置 第 2 步中列出的相同服务器生成字段
- 将
-
应用新模板
-
更新 MachineDeployment 引用
Cluster API 控制器会触发滚动更新。在机器被替换之前,现有机器会继续使用旧的 bootstrap 配置。
要升级 Kubernetes 版本? 请参阅 升级 VMware vSphere 上的集群,了解完整的控制平面和 worker 升级流程。
故障排除
当 worker 节点管理失败时,先执行以下检查:
- 检查
VSphereMachine中MachineConfigPoolReady的条件。如果为False,原因会说明 slot 分配失败的原因:PoolBoundToOtherConsumer:该 pool 已绑定到其他KubeadmControlPlane或MachineDeployment。NoAvailableSlots:没有 slot 匹配所需的 datacenter 或 failure domain。
- 验证 worker machine config pool 仍然有可用 slot。
- 验证 worker IP 地址、网关和 DNS 设置正确。
- 验证 worker VM 模板仍然满足所需的 Kubernetes 版本和 guest-tools 要求。
- 当节点正在等待分配 IP 时,检查
VSphereVM.status.addresses。
后续步骤
如果你需要更改 worker 网络、放置位置或磁盘拓扑,请继续阅读 扩展 VMware vSphere 集群部署。