升级 global 集群的分发版本
此页面适用于两种节点操作系统。在非 Alauda OS global 集群上,此操作步骤还会原位升级 Kubernetes,并在操作完成后完成 global 集群升级。如果您的 global 集群使用 Alauda OS,请先完成此页面中的操作,然后继续执行 在 Alauda OS 上升级 Kubernetes ,通过替换节点来推出 Kubernetes。
由一个global集群和一个或多个业务集群组成。要将平台迁移到新的 ACP 分发版本,请先将 global 层升级到目标分发版本,然后将业务集群升级到相同的分发版本。
集群升级使用基于 CVO 的工作流。典型的 global 集群升级包括工件准备、升级前检查、升级请求和状态观察。
升级 global 集群前,请确认每个业务集群都处于 Kubernetes 支持矩阵 中目标版本的兼容版本范围内。此先决条件与第三方集群接入范围相互独立。
无论环境是否使用 global DR,都必须满足此兼容版本先决条件。global DR 会改变升级 global 层所使用的操作步骤,但不会改变以下要求:在将 global 层升级到目标分发版本之前,业务集群必须保持在兼容的 Kubernetes 版本范围内。
Global 集群升级遵循本页中记录的、经过验证的基于 upgrade.sh 的操作步骤。您可以从 Web Console 请求 global 集群升级,也可以通过更新 ClusterVersionShadow.spec.desiredUpdate 或使用带有 --cluster=global 的 ACP CLI 请求升级。有关完整的 AC CLI 工作流和输出解读,请参阅升级集群。有关完整的命令和标志语法,请参阅 AC CLI 管理员命令参考。
如果环境使用 global DR,请按照在 DR 环境中升级 Global 集群操作。否则,请按照下面的标准工作流操作。
标准工作流
global 集群升级会按照时间线分阶段执行。大部分工作会在维护窗口之前完成,从而使维护窗口本身保持简短且可预测:
阶段 1 和阶段 2 不会更改集群状态 — 请尽早运行这些阶段,以便维护窗口中只包含阶段 3。对于小型或实验室环境,也可以运行单个 bash upgrade.sh,同时执行同步和 CVO 部署,但生产环境的维护窗口通常会将这两个阶段分开。
同步升级工件
时间:维护窗口前的任意时间。此步骤会将工件上传到 Registry,不会更改集群状态。
首先,记录已配置的 Registry 地址,并确定平台使用的是内置 Registry 还是外部 Registry:
对于平台内置 Registry,第二个值为 false;对于外部 Registry,第二个值为 true。将目标 Aligned 软件包复制到 plugins/ 后,再选择发布命令。
Core Package 不包含 ACP Upgrade to v4.5 中的 Aligned 软件包。将升级前准备中列出的十一个单独下载的软件包复制到解压后的 Core Package 的 plugins/ 目录中。对每个软件包分别运行以下命令:
同步前,请确认该目录包含全部十一个软件包:
根据 ProductBase.spec.registry.external 的值,按照相应分支发布暂存的 payload。
对于平台内置 Registry(false),请在解压后的 Core Package 目录中以仅同步模式运行 upgrade.sh:
--only-sync-image 会上传 Core 镜像以及您手动放入 plugins/ 的软件包,但不会部署集群版本 operator,也不会更改正在运行的应用。CVO 将在维护窗口内的后续步骤中部署 — 请参阅部署集群版本 operator。
对于外部 Registry(true),不要将 --only-sync-image 作为已发布的证明。upgrade.sh 会自动跳过镜像同步。请从目标 Core Package 的 installer/ 目录开始,按照准备目标版本 payload,同时运行 res/upload.sh all 和 res/upload.sh necessary。两种模式可以按任意顺序运行,但都必须成功。
所选发布路径会使基于 CVO 的工作流所需的工件可用,包括:
对于 ACP Upgrade to v4.5 中的十一个 Aligned 原生应用,始终将软件包暂存到 plugins/。内置 Registry 路径会通过 upgrade.sh --only-sync-image 发布这些软件包;外部 Registry 路径则通过 res/upload.sh all 发布。CVO 仅会升级已安装的原生应用;为未安装的原生应用发布软件包并不会安装该应用。
对于从 violet list 清单下载的其他软件包,请使用 violet push:
建议在 global 窗口期间,将每个 operator 软件包推送到每个 集群。如果 global 窗口已结束,而您发现某个业务集群缺少 operator 软件包,仍可在升级该业务集群之前将软件包推送到该集群 — 请参阅升级业务集群。
请求升级前,请确保目标软件包对集群上已安装的每个 Aligned 插件都可用。对于 ACP Upgrade to v4.5 中的原生应用,请使用 upgrade.sh;对于其他 Aligned 软件包,请使用 violet。同步软件包不会安装当前未安装的应用。对于已安装的 Aligned 集群插件,CVO 要求对应的目标 ModulePluginConfig 处于 Ready 状态;否则,CVO 无法构建升级计划,会通过 ClusterVersionShadow 报告错误,并重试现有请求。已安装的 Aligned operator 需要其目录中对应的目标 InstallPlan。
Registry 的行为取决于环境配置方式:
当目标 Registry 不是平台默认 Registry 时,请添加 Registry 参数:
工件验证会将 plugins/ 中存在的每个软件包与目标 Core Package 预期的版本进行比较,若版本不匹配则失败。它不会验证软件包集合是否完整:从未暂存的软件包不会被检查,运行会继续。请先根据下载 ACP Upgrade to v4.5确认十一个软件包,再依赖验证成功的结果。
镜像和插件同步完成之前,请勿开启维护窗口。
运行升级前检查之前,请确认 Registry 配置仍然正确:
将所选发布命令成功完成,以及 Registry 管理界面或 API 中的相关信息,作为阶段 1 的证据。请确认预期的目标仓库和标签均已存在,并将已发布的 Extension 集合与导出到 apps.yaml 的已安装清单进行比较。不要将 ProductBase.status.artifacts 作为目标版本的零输出门槛:它表示当前目录,其中可以合理包含可选或未安装软件包的 Absent 条目。
运行升级前检查
时间:维护窗口前 1–2 周,以便在窗口开启前有时间解决所有阻塞项。
以升级前检查模式运行 upgrade.sh:
升级前检查为只读操作 — 它会验证升级准备情况,不会更改集群状态。
对于从未部署过集群版本 operator 的集群,--preflight 尚无法运行,并会报错:
该消息提到了一个 API 组,但原因是操作顺序不正确,而不是版本不匹配:ProductManifest 自定义资源定义和目标版本 ProductManifest 均由部署集群版本 operator创建。请先执行该步骤,然后再运行升级前检查。对于之前已使用 CVO 工作流完成升级的集群,这些资源已存在,同步工件后即可随时运行升级前检查。
升级前检查会返回两部分内容:
默认检查集包括:
ResourcePatchUpgradeableClusterVersionUpgradeableAdminAckRequiredVersionUpgradePathKubernetesVersionSupportedDockerRuntimeUnsupportedClusterRunningClusterModuleStableControlPlaneStaticPodsPresentCustomEtcdBackupCronJobsAbsentCRIUpgradePodsAbsentModuleInfoStablePlatformLicense
处理升级前检查阻塞项
时间:维护窗口前;升级前检查一旦报告阻塞项,就应立即处理。
在经过定制的环境中,首次运行升级前检查就全部通过并不常见。请将解决阻塞项视为准备阶段的一部分,而非例外情况 — 这正是要提前一到两周运行升级前检查的原因。
如果任何检查未通过,请勿开启维护窗口。请根据升级故障排除解决每个阻塞项,其中涵盖:
ResourcePatchUpgradeable— 在经过定制的环境中最常见的阻塞项,以及所需的目标版本豁免。- 其他常见阻塞项 —
KubernetesVersionSupported、VersionUpgradePath、ClusterRunning、DockerRuntimeUnsupported和模块稳定性。 - 管理员确认门槛 —
AdminAckRequired失败时的处理方式。
不要强行绕过失败的检查进行升级。VersionUpgradePath、KubernetesVersionSupported 和 AdminAckRequired 是受支持升级路径本身的门槛。如果无法解决阻塞项,请在继续之前联系技术支持。
部署集群版本 operator
时间:维护窗口开始时。
以跳过同步模式运行 upgrade.sh。由于已在同步升级工件中上传工件,因此跳过同步:
此操作会部署或更新集群版本 operator(CVO),并完成剩余准备工作。下一步请求升级后,CVO 将驱动 Core 和 Aligned 插件升级。
命令完成后,请检查目标 ProductManifest,再请求升级:
每个工件的输出用于诊断,不要求为空。目标清单可能包含可选、Agnostic 或未安装的条目,这些条目未处于 Ready 状态也可能是正常情况。请将输出与已安装的 Core 和 Aligned 清单进行比较。对于已安装的 Aligned ModulePlugin,如果对应的目标 ModulePluginConfig 所属的 channel 未处于 Ready 状态,请检查该资源:
请使用目标 ProductManifest 中的组件名称和 channel 标签,或 ClusterVersionShadow 错误中报告的名称,来识别 ModulePluginConfig。此名称中的组件版本不一定是 ACP Distribution Version。不要仅凭 artifactStatus: Absent 就认定 Registry manifest 缺失;请使用 ModulePluginConfig 条件及其 .spec.image,以区分 manifest 缺失与身份验证、CA、网络或软件包内容问题。
请求升级
部署集群版本 operator 后,可通过以下任一入口请求升级。这些入口的功能相同;请选择符合您运维模式的入口。
平台在 Web Console 中提供两个集群管理界面。Web Console 是平台内置的界面,也是默认入口。Web Console (Fleet Essentials) 是较新的集群管理界面,通过独立的集群插件提供,必须先安装才能使用。
这是内置的集群管理界面。每个 平台都提供此界面,除平台本身外无需安装任何组件。
请求升级需要对目标集群的 ClusterVersionShadow 和 ResourcePatch 资源具有更新权限。
-
在左侧导航栏中,点击 Clusters > Clusters,然后点击
global集群。 -
打开 Functional Components 选项卡。
该选项卡会列出每个组件及其 Status 和 Version。有可用新版本的组件会标记为 Upgradeable。无法升级到新版本的组件则会显示阻止原因,页面还会显示与新版本不兼容的组件。
-
点击 Upgrade。
没有可升级版本(No upgradable version)、升级已在运行(Upgrading)或集群运行状况不正常(Cluster Abnormality)时,该按钮处于禁用状态。将鼠标悬停在按钮上即可查看原因。
-
在 Personalized Configuration Confirmation 步骤中,查看列出的配置,然后点击 Acknowledge。
仅当集群包含个性化配置时才会显示此步骤,包括自定义的
ModuleInfo、自定义的ClusterModule或ResourcePatch。该步骤会列出每个配置项,并以只读 YAML 的形式显示所选配置项的覆盖值,警告内容为:您的环境中存在以下个性化配置,请与技术支持人员确认是否需要删除或调整,否则升级可能会失败!当集群不包含个性化配置时,不会显示此步骤,页面会直接打开下一步所述的确认表单。
-
在 Confirm Component Upgrade 步骤中,查看 Current Version 和 Target Version。
目标版本是
ClusterVersionShadow.status.availableUpdates的第一项。该版本由已为集群准备的升级工件确定,无法在此界面中手动选择。 -
点击 Upgrade。
-
在 Are you sure you want to upgrade the cluster version? 对话框中,设置 Maintenance mode,然后点击 Upgrade 提交请求。
确认对话框打开时,Maintenance mode 已启用。维护模式启用期间,非平台管理员用户将被限制访问平台功能,并会看到 Platform maintenance announcements 中的文本。启用开关时必须填写公告,且公告长度限制为 200 个字符。如果变更窗口不要求限制访问,请在提交前关闭该开关。该开关会写入平台范围的维护模式设置,因此变更窗口结束后请再次检查该设置。
提交请求后,页面会返回 Functional Components 选项卡,并显示 The upgrade has been initiated. It may take 5~10 minute for the status to update.。点击组件 Status 列中的放大镜图标,可以跟踪该组件的升级进度。
观察执行情况
使用以下命令检查总体状态:
重要状态字段:
请先关注以下条件:
如果 Stalled=True,请参阅升级故障排除。要观察单个插件或 operator 模块,请读取其 ModuleInfo:
当模块的 status.phase 为 Running 且 status.version 等于目标版本时,表示该模块已达到目标版本。
从 Marketplace 升级 Agnostic 插件
CVO 驱动 Core 和 Aligned 插件。Agnostic 插件不在 CVO 的范围内,集群达到目标 Distribution Version 后,必须单独升级这些插件。每个 Agnostic 插件是否需要升级取决于其自身的 Kubernetes 兼容性 — 请参阅插件的 release notes,了解其与目标 Kubernetes 版本的兼容性。
对于 global 集群上正在使用的每个 Agnostic 插件:
- 在 Web Console 中切换到 Administrator 视图。
- 对于 Agnostic 集群插件,导航到 Marketplace > Cluster Plugins;对于 Agnostic operator,导航到 operator 操作流程。
- 选择目标插件或 operator 并触发升级。Marketplace 升级流程会读取之前使用
violet推送的软件包。
如果在升级前跳过了推送 Agnostic 插件,而 Marketplace 未提供目标版本,请先完成 violet push 步骤,然后重试 Marketplace 升级。
验证升级
集群达到所需版本并处理完正在使用的 Agnostic 插件后,请完成升级验证。如果 global 集群使用 Alauda OS,请先完成 在 Alauda OS 上升级 Kubernetes。