概览
从 ACP 4.3 开始,集群升级采用基于 Cluster Version Operator (CVO) 的工作流。
在 Web Console 中,升级请求现在采用两步流程:先审查 RPCH 项目,然后在单独的确认步骤中提交升级请求。
将平台迁移到新的 ACP Distribution Version 时,升级通常分两个阶段进行:
- 按照经过验证的 global 集群操作步骤,将 global 层升级到目标 Distribution Version,其中包括制品准备和预检。
- 当 global 层达到目标 Distribution Version 后,从受支持的 workload cluster 入口升级业务集群,并观察集群状态,直到每个目标集群都达到相同的 Distribution Version。
业务集群只能升级到 global 层已经达到的 Distribution Version。在启用了 global disaster recovery (DR) 的环境中,这意味着在业务集群升级到该 Distribution Version 之前,备用和主 global 集群都必须先达到目标 Distribution Version。在升级 global 层之前,请确认每个业务集群都位于 Kubernetes 支持矩阵中该目标 Distribution Version 的 Compatible Versions 范围内。此先决条件与顺序规则是分开的。
升级工作流
请按以下顺序阅读页面:
- 升级前准备:确认受支持的路径、集群就绪状态以及完整的目标版本包集合。
- 升级 global 集群,或者在启用 global DR 时阅读在 DR 环境中升级 global 集群。
- 在 global 层达到目标 Distribution Version 后,执行升级业务集群。
- 升级验证:接受 Distribution Version、Kubernetes、Core、Aligned plugins、Pods、制品、CVO 历史记录和 Web UI。
- 升级故障排查:仅当预检或执行报告阻塞或停滞时使用。
请规划维护时间线,确保准备工作在变更窗口之前完成:
关键概念
- ClusterVersionShadow (
cvsh):用于跟踪当前版本、目标版本、预检结果、执行阶段和历史记录的升级资源。 - Distribution Version:集群当前达到的 ACP 版本。业务集群只能升级到 global 层已经达到的 Distribution Version。
- Preflight:在升级开始应用目标版本之前运行的验证检查。对于业务集群,请在提交升级请求后,从升级状态输出中查看预检结果。
- 可用升级目标:当前为集群提供的升级版本。在 Web Console 中,当前升级流程的目标版本由平台决定。
- upgrade.sh:用于 global 集群升级的准备脚本。使用平台内置 Registry 时,它会同步 Core 制品和存放在
plugins/中的包。使用外部 Registry 时,会跳过同步,并单独上传目标负载。该脚本还会在适当阶段运行预检并部署 CVO。 - Global DR environment:同时包含主 global 集群和备用 global 集群的环境。
- 主 global 集群:平台访问域当前解析到的 global 集群。
- 备用 global 集群:DR 对中的另一个 global 集群。发生故障切换后,这两个集群的角色会互换。
升级范围和顺序
完整的 ACP 升级采用分阶段方式进行。每个集群都在单个维护窗口内升级,但平台是按集群逐个推进的,先 global,后业务集群。
单个集群升级窗口涵盖四类工作:
每个部分何时迁移受以下规则约束:
- 平台要求集群的 Kubernetes 版本必须与其 Core 和 Aligned 版本一起升级;将新的 Core 版本与旧的 Kubernetes 次要版本混用未经过验证。
- 在请求升级之前,请为该集群上已安装的每个 Aligned plugin 准备好目标版本包。对于来自 ACP Upgrade to v4.4 的包,请使用同步升级制品中的
plugins/发布路径;对于其他 Aligned 包,请使用violet。已安装的 Aligned plugin 若缺少对应包,会使 CVO 升级停滞。对于集群上未安装的 Aligned plugin,其包不会导致这些插件被安装。 - Cluster plugins 是全局资源。通过 global 层制品发布或
violet工作流提供的包,可以供平台中的每个集群使用;不需要针对每个业务集群重复发布同一个 cluster plugin。 - Operators 是按集群作用域划分的。虽然建议将 operator 推送到 global 层,但仅此并不充分;在业务升级之前,同一个 operator 必须在每个业务集群上都可用。如果你在 global 窗口期间忘记推送某个 operator,可以在业务升级前再次推送作为补救。
- 只有当业务集群超出目标 ACP 版本的 Kubernetes 支持矩阵时,才需要进行业务集群升级。仍处于受支持范围内的业务集群,在 global 层迁移后可以保留现有的 Kubernetes 版本;平台会继续管理它们。
CVO 管理范围
Cluster Version Operator (CVO) 会决定它端到端驱动哪些类型的升级:
在真实生产维护窗口中,客户通常会将 Core、Aligned 以及正在使用的 Agnostic plugins 一起迁移。下面的升级页面记录了这一路径:在升级前准备阶段准备所有必需的制品,通过 CVO 推进 Core 和 Aligned,并从 Marketplace 完成正在使用的 Agnostic plugins。
传统环境与 Immutable Infrastructure 上的 Kube-OVN
在传统操作系统集群上(本页面的范围),Kube-OVN 是 Core 的一部分,会随着其他 Core 内容一起由 CVO 自动升级——operator 不会为每个集群修补 Kube-OVN 版本注解,也不会手动修改 Kube-OVN AppRelease。
在 Immutable Infrastructure 集群(DCS、vSphere、HCS)上,Kube-OVN 由 IaaS 提供商通过业务 Cluster 资源上的 cpaas.io/kube-ovn-version 注解单独驱动——请参见 在 Immutable Infrastructure 上升级集群。该路径不适用于传统 OS 集群。
升级入口
- global 集群:按照经过验证的基于
upgrade.sh的操作步骤执行。准备阶段完成后,可通过 Web Console 的两步 RPCH 审查流程、ACP CLI,或直接更新ClusterVersionShadow.spec.desiredUpdate来请求升级。 - 业务集群:在目标 Distribution Version 对业务集群可用后,可通过 Web Console 的两步 RPCH 审查流程或使用 ACP CLI。