在 Huawei DCS 上升级 Kubernetes
本指南说明如何完成 Huawei DCS 集群升级工作流的第 2 阶段。在升级 Kubernetes 之前,请先完成 Upgrading Clusters 中描述的 Distribution Version 升级。
目录
升级顺序前提条件使用 YAML升级控制平面基础设施操作步骤升级控制平面 Kubernetes 版本操作步骤升级工作节点操作步骤使用 Web UI前提条件升级工作流检查可用升级升级 Control Plane Node Pool升级 Worker Node Pools跨版本升级故障排查其他资源升级顺序
按照以下顺序升级 DCS 集群:
- 升级 Distribution Version(Aligned Extensions)。请参见 Upgrading Distribution Version。
- 升级控制平面 Kubernetes 版本。
- 将工作节点升级到目标 Kubernetes 版本。
Cluster API 使用内置的安全机制编排滚动更新,以减少服务中断。
前提条件
开始之前,请确保满足以下所有前提条件:
- Distribution Version 升级已完成
- 控制平面可访问
- 所有节点均健康且处于 Ready 状态
- IP Pool 有足够的容量支持滚动更新
- VM 模板支持目标 Kubernetes 版本。版本映射请参见 OS Support Matrix
- 目标 Kubernetes 版本与您的工作负载和附加组件兼容
升级期间的数据丢失
升级依赖 Cluster API 的滚动更新机制。在 DCS 上执行滚动更新时,数据盘会从旧 VM 分离并重新挂载到新 VM。请确保没有集群功能或工作负载依赖系统盘上存储的数据。
使用 YAML
基于 YAML 的升级不依赖 Fleet Essentials。
升级控制平面基础设施
升级控制平面 machine template 允许您发布更新后的 VM 规格、系统补丁和基础设施设置。
操作步骤
-
创建更新后的 machine template
将
KubeadmControlPlane引用的现有DCSMachineTemplate复制并保存为新文件: -
修改模板规格
按需更新新模板:
- 将
metadata.name设置为<new-template-name> - 更新
spec.template.spec.vmTemplateName - 更新
spec.template.spec.vmConfig.dcsMachineCpuSpec.quantity - 更新
spec.template.spec.vmConfig.dcsMachineMemorySpec.quantity - 更新
spec.template.spec.vmConfig.dcsMachineDiskSpec
- 将
-
应用更新后的模板
-
更新控制平面引用
修改
KubeadmControlPlane资源以引用新模板: -
监控滚动更新
升级控制平面 Kubernetes 版本
升级控制平面 Kubernetes 版本需要兼容的 VM 模板以及更新后的 KubeadmControlPlane 版本。
操作步骤
-
准备兼容的 VM 模板
确保所引用的
DCSMachineTemplate使用的vmTemplateName与目标 Kubernetes 版本匹配。 -
更新控制平面版本
修改
KubeadmControlPlane资源中的spec.version。您也可以同时更新相关的 rollout 设置,或引用的基础设施模板,以符合您的升级策略。 -
监控升级
升级工作节点
工作节点 Kubernetes 升级通过 MachineDeployment 资源进行管理。
操作步骤
-
创建更新后的 machine template
- 创建一个新的
DCSMachineTemplate,其vmTemplateName支持目标 Kubernetes 版本 - 确保 VM 模板包含正确的 Kubernetes 二进制文件和依赖项
- 创建一个新的
-
更新 MachineDeployment
- 将
spec.template.spec.version更新为目标 Kubernetes 版本 - 将
spec.template.spec.infrastructureRef.name更新为新 machine template 的引用 - 如需更改 bootstrap 配置,可选更新
spec.template.spec.bootstrap.configRef.name
- 将
-
监控滚动更新
- 验证滚动更新已成功完成
- 验证新的工作节点已加入集群,并运行目标 Kubernetes 版本
使用 Web UI
在完成第 1 阶段后,使用此工作流从 Web UI 升级 Kubernetes。
版本要求:此工作流需要 Fleet Essentials 和 Alauda Container Platform DCS Infrastructure Provider 1.0.13 或更高版本。如果 provider 版本早于 1.0.13,请使用 YAML manifests。
前提条件
- Distribution Version 升级已完成。请参见 Upgrading Distribution Version
- Control Plane Node Pool 处于 Running 状态
- IP Pool 有足够的容量支持滚动更新
升级工作流
在完成 Distribution Version 升级后,Kubernetes 升级按以下顺序进行:
- 升级 Control Plane Node Pool。
- 等待 Control Plane Node Pool 升级完成。
- 按任意顺序升级 Worker Node Pools。
检查可用升级
导航:Clusters → Clusters → 选择集群 → Node Pools Tab
有可用升级的 Node Pools 会显示 Upgrade available 指示器。单击 Node Pool card 查看当前版本与目标版本。
升级 Control Plane Node Pool
步骤:
- 在 Node Pools Tab 中,找到 Control Plane Node Pool
- 单击 Upgrade
- 查看升级信息:
- Current Version:当前 Kubernetes 版本
- Target Version:自动选择的最新次要版本
- 单击 Confirm 开始升级
监控:
- 观察 Node Pool 状态
- 节点将逐个执行滚动更新(maxSurge=0, maxUnavailable=1)
- 升级时间取决于节点数量和资源情况
升级 Worker Node Pools
在 Control Plane Node Pool 升级完成之前,Worker Node Pools 不能升级。
可开始 Worker Pool 升级的条件:
- Control Plane Kubernetes 版本与 global cluster 版本一致
- Control Plane 处于 Running 状态
升级步骤:
- 对每个 Worker Node Pool:
- 单击 Upgrade 按钮
- 查看并确认
- 在 Control Plane 完成后,可以并行升级各个 Pool
升级限制:
跨版本升级
当跨多个次要版本升级时(例如,v1.32 → v1.34):
- 将 Control Plane 升级到 v1.33
- 等待完成
- 将 Control Plane 升级到 v1.34
- 对 Worker Pools 重复上述过程
原因:Kubernetes 仅支持单次次要版本升级。