升级 global 集群
由一个 global 集群和一个或多个业务集群组成。要将平台迁移到新的 ACP Distribution Version,请先将 global 层升级到目标 Distribution Version,然后再将业务集群升级到相同的 Distribution Version。
ACP 4.3 使用基于 CVO 的集群升级流程。典型的 global 集群升级包括工件准备、预检、升级请求和状态观察。
在将 global 集群升级到 ACP 4.3 之前,请确认每个业务集群都运行在兼容的 Kubernetes 版本上。对于 ACP 4.3,兼容版本为 1.34、1.33、1.32 和 1.31。该前置条件独立于更广泛的第三方集群管理范围。
无论环境是否使用 global DR,此兼容版本前置条件都适用。global DR 会改变升级 global 层所使用的操作步骤,但不会改变在将 global 层升级到目标 Distribution Version 之前,业务集群必须保持在兼容的 Kubernetes 版本范围内这一要求。
global 集群升级遵循本页记录的已验证 upgrade.sh 操作步骤。你可以通过 Web Console、更新 ClusterVersionShadow.spec.desiredUpdate,或使用带 --cluster=global 的 ACP CLI 来发起 global 集群升级。有关完整的 AC CLI 工作流和输出解读,请参见 升级集群。有关完整命令和标志语法,请参见 AC CLI 管理员命令参考。
如果环境使用 global DR,请遵循 Global DR 操作步骤。否则,请遵循下面的标准工作流。
标准工作流
准备升级工件
在解压后的核心包目录中运行 bash upgrade.sh。
upgrade.sh 会准备基于 CVO 的工作流所需的资源,包括:
Registry 行为取决于环境配置方式:
常用参数:
- 在镜像和插件同步完成之前,不要继续执行下一步。
- 仅在你只需要工件同步而不需要进一步准备时,才使用
--only-sync-image。 - 仅在所需镜像和插件工件已经上传完成时,才使用
--skip-sync-image。
运行预检
在请求升级之前先运行预检:
预检返回两部分:
默认检查集包括:
ResourcePatchUpgradeableClusterVersionUpgradeableVersionUpgradePathKubernetesVersionSupportedDockerRuntimeUnsupportedClusterRunningClusterModuleStableControlPlaneStaticPodsPresentCustomEtcdBackupCronJobsAbsentCRIUpgradePodsAbsentModuleInfoStablePlatformLicense
在需要时处理预检阻塞
如果 ResourcePatchUpgradeable 因 reason=UnexemptResourcePatches 而失败,请检查阻塞的 ResourcePatch,并添加所需的豁免注解:
默认注解键为 config.cpaas.io/exempt-for-ver。
如果临时排障需要禁用特定检查,请配置 cpaas-system/cvo-config:
请求升级
准备阶段完成后,选择以下入口之一:
- 在目标版本对该集群可用后,使用 Web Console。
- 当你需要操作底层 CVO 资源时,直接 patch
ClusterVersionShadow.spec.desiredUpdate。 - 使用 ACP CLI 显式请求
global的升级。
如果你使用 Web Console,请求流程分为两步:
- 在 步骤 1 中,检查 RPCH 列表。
- 单击 确认 以继续到 步骤 2。
- 在 步骤 2 中,检查 当前版本 和 目标版本。此阶段页面不会显示插件列表或警告图表。
- 目标版本由已准备好的升级工件决定,无法在 Web Console 中手动选择。
- 单击 开始升级。
- 在对话框中确认操作。
- 确认后,页面会显示升级请求已提交,且操作进入进行中状态。
kubectl 示例:
你也可以直接编辑资源:
最小配置:
ACP CLI 示例:
观察执行情况
使用以下命令检查总体状态:
重要状态字段:
首先重点关注以下条件:
有用的诊断命令:
(条件)升级 Service Mesh Essentials
如果已安装 Service Mesh v1,请在升级业务集群之前先参考 Alauda Service Mesh Essentials 集群插件 文档。
升级后
- 升级 Alauda AI
- 升级 Alauda DevOps
-
在所有业务集群也都升级到 ACP 4.3 之后,请按照 禁用 PKCE Plain 方法 完成 PKCE 加固。
-
ACP 4.3 修复了一个 API 身份验证问题,在该问题中,某些 API 之前可以在未通过身份验证的情况下被访问。global 集群升级到 ACP 4.3 后,请将以下 L5 插件升级到与 ACP v4.3 兼容的版本。否则,其 UI 页面可能无法打开:
Alauda DevOps v3Alauda AI EssentialsAlauda HyperfluxAlauda Container Platform Data Services Essentials
-
升级插件后,请确认列表中的每个插件 UI 页面都能成功打开。
Global DR 操作步骤
当环境同时包含主 global 集群和备用 global 集群时,请使用此操作步骤。下面与 DR 相关的步骤是在标准 CVO 工作流之外的补充。
在升级前验证 DR 环境
按照常规的 global DR 检查操作步骤,确保 备用 global 集群 中的数据与 主 global 集群 一致。有关 DR 拓扑和同步工作流的背景信息,请参见 Global Cluster Disaster Recovery。
如果检测到不一致,请在继续之前联系技术支持。
在 两个 global 集群上运行以下命令,确保没有任何 Machine 节点处于非运行状态:
如果存在此类节点,请先解决再继续。
从备用 global 集群卸载 etcd 同步插件
- 通过 IP 或 VIP 访问 备用 global 集群 的 Web Console。
- 切换到 管理员 视图。
- 导航到 Marketplace > Cluster Plugins,并选择
global集群。 - 找到 etcd Synchronizer 并将其卸载。
- 等待卸载完成后再继续。
在两个 global 集群上准备升级工件
在 备用 global 集群 和 主 global 集群 上完成标准工作流中的 准备升级工件。
在两个集群上使用相同的准备模式。
升级备用 global 集群
如果你将使用备用 global 集群上的 Web Console,请确认备用集群 ProductBase 的 spec.alternativeURLs 中包含备用 VIP:
准备完成后,在 备用 global 集群 上执行标准工作流中的剩余步骤:
- 运行预检
- 请求升级
- 观察执行情况,直到备用 global 集群达到目标版本
升级主 global 集群
在备用 global 集群达到目标版本后,在 主 global 集群 上执行标准工作流中的剩余步骤:
- 运行预检
- 请求升级
- 观察执行情况,直到主 global 集群达到目标版本
重新安装 etcd 同步插件并验证同步状态
在重新安装插件之前,请确认在使用该转发模式时,端口 2379 已从两个 global 集群的 VIP 正确转发到各自的控制平面节点。如果备用 global 集群可以直接访问活动 global 集群,则不需要通过负载均衡器进行端口转发。
要重新安装该插件:
- 通过 VIP 访问 备用 global 集群 的 Web Console,并切换到 管理员 视图。
- 导航到 Marketplace > Cluster Plugins,并选择
global集群。 - 找到 etcd Synchronizer,单击 Install,并配置所需参数。
配置插件时:
- 当端口
2379没有通过负载均衡器转发时,请正确设置 Active Global Cluster ETCD Endpoints。 - 使用 Data Check Interval 的默认值。
- 除非你正在排查问题,否则保持 Print detail logs 为禁用状态。
验证同步 Pod 是否在备用 global 集群上运行:
一旦出现 Start Sync update,请重新创建其中一个 Pod,以触发对具有 ownerReference 依赖关系资源的同步:
检查同步状态:
输出解释:
LOCAL ETCD missed keys:这些 Key 存在于主 global 集群中,但在备用 global 集群中缺失。通常在重启一个etcd-syncPod 后可以解决。LOCAL ETCD surplus keys:这些 Key 存在于备用 global 集群中,但不在主集群中。在删除之前,请先与运维团队确认这些 Key。