升级业务集群

升级路径

本页介绍业务集群的传统操作系统路径。对于使用 Alauda OS 的业务集群,Kubernetes 步骤位于 Immutable Infrastructure 文档中——请参见 在 Immutable Infrastructure 上升级集群。本页描述的 Core、Aligned 和 Agnostic 步骤仍适用于 immutable-OS 集群;仅 Kubernetes 的部署方式不同。

在 global 层已经达到目标 ACP Distribution Version 之后,可以升级业务集群。如果 global 层已经处于该 Distribution Version,则无需再次升级。

业务集群升级使用与 global 集群相同的基于 CVO 的工作流:确认先决条件、运行 preflight 检查、发起升级请求并观察执行过程。该工作流还有两条额外规则:

  • 如果平台使用 global DR,则在任何业务集群升级到该 Distribution Version 之前,备用和主用 global 集群都必须先达到目标 Distribution Version。
  • 目标版本通常只有在 global 层已经达到相同的 Distribution Version 之后,才会对业务集群开放。

业务集群升级与 global 集群升级一样会分阶段进行,但流程更短。业务集群没有自己的 cluster version operator——CVO 运行在 global 集群上,并集中驱动业务集群升级——因此业务集群没有自己的 artifact 同步或 CVO 部署步骤:

阶段时间发生的内容
1. Preflight窗口前 1–2 周确认先决条件并运行 upgrade.sh --cluster=<cluster> --preflight;在窗口开启前解决所有阻塞项。
2. Upgrade维护窗口期间发起升级请求并观察执行过程,直到集群达到目标版本。

工作流

确认业务集群先决条件

在发起升级请求之前,验证以下内容:

  • 业务集群版本低于当前 global 集群版本。
  • global 层已经达到目标 ACP Distribution Version。
  • 在 global DR 环境中,备用和主用 global 集群都已经达到该目标 Distribution Version。

确保 Aligned operator 包可用

升级 global 集群 中推荐的模式会在 global 升级窗口期间将 operator 包推送到每个 集群。如果已遵循该建议,则业务集群已经拥有所需的所有 operator 包,可跳过本节。

集群插件不需要按业务集群单独发布。通过 upgrade.shviolet 向 global 层提供的集群插件,可在平台中的每个集群上安装和升级。

如果 global 窗口没有将 operator 包推送到该业务集群——例如,该集群在 global 窗口期间处于离线状态,或是后来才加入——则在升级请求之前,为此业务集群上已安装的每个 Aligned operator 推送目标版本包:

violet push <path/to/operator-package> \
  --platform-address "https://<your-platform-domain>" \
  --platform-token "<platform_token>" \
  --clusters "<workload-cluster-name>"

你只需要为业务集群上实际安装的 Aligned operators 推送包。向 global 层提供的 Aligned 集群插件包对所有业务集群都可用,不需要按集群发布。

如果已安装的 Aligned operator 的目标包不可用,CVO 可能会等待匹配的目标 InstallPlan,然后在重试现有请求时报告错误。请检查该 operator 的 catalog、SubscriptionInstallPlanModuleInfo;使用上面的命令发布缺失的包,或修正报告中的 catalog 或 registry 问题。继续观察现有请求即可,无需重新提交。未安装在该业务集群上的 Aligned operator 包不会阻止其升级。

运行 preflight 检查

**时间:**维护窗口前 1–2 周,以便在窗口开启前有时间解决任何阻塞项。

以 preflight 模式对目标集群运行 upgrade.sh

bash upgrade.sh --cluster=<cluster> --preflight

Preflight 为只读操作——它用于验证升级就绪状态,不会更改集群状态。

Preflight 返回两部分内容:

输出目的
Summary显示总体结果、当前版本、期望版本和期望镜像。
Checks显示每个单独验证项的结果。

如果 preflight 未通过,请不要提交升级请求,直到所有阻塞项都已解决。

有关 preflight 阻塞处理模式,请参见升级故障排查

发起升级请求

**时间:**在维护窗口期间,并且在 preflight 通过之后。

通过以下入口之一发起升级请求。这两个入口是等价的;请选择适合你的操作模型的方式。

Web Console
ACP CLI

在 Web Console 中从业务集群开始升级。该请求遵循两步流程:

  • 步骤 1 中,查看 RPCH 列表。
  • 点击 确认 继续到 步骤 2
  • 步骤 2 中,查看 当前版本目标版本。此阶段页面不会显示 plugin 列表或警告面板。
  • 目标版本是当前 global 集群版本,不能在 Web Console 中手动选择。
  • 点击 开始升级
  • 提交请求后,页面会显示升级请求已提交,并且该操作进入进行中状态。

观察进度

提交升级请求后,使用 cvsh.status 跟踪当前版本、目标版本、preflight 结果、阶段和历史记录:

kubectl get cvsh <cluster> -n cpaas-system
kubectl get cvsh <cluster> -n cpaas-system -o yaml

如果当前 ACP 上下文指向目标业务集群,也可以检查 CLI 报告的状态:

# Show summary, preflight, and stage progress for the target cluster upgrade
ac adm upgrade status

有关 ac adm upgrade status 输出的详细语义(preflight 和阶段解读),请参见升级集群

如果升级报告 Stalled=True,请使用升级故障排查。缺失的 Aligned operator 包和集群插件包有不同的恢复路径。

上述命令跟踪的是集群级别(Core 和 Aligned)的升级。要观察单个 plugin 或 operator 模块——例如在升级 Agnostic plugin 时——请读取其 ModuleInfo

kubectl get moduleinfo -l cpaas.io/cluster-name=<cluster> \
  -o custom-columns='MODULE:.metadata.labels.cpaas\.io/module-name,CURRENT:.status.version,TARGET:.spec.version,NEW:.status.availableVersions[0].version,PHASE:.status.phase'

status.phaseRunningstatus.version 等于目标版本时,说明该模块已达到目标状态。

从 Marketplace 升级 Agnostic plugins

CVO 负责驱动 Core 和 Aligned plugins。Agnostic plugins 不在 CVO 的范围内,并且必须在该业务集群达到目标 Distribution Version 之后单独升级。

对该业务集群中每个正在使用的 Agnostic plugin:

  1. 在 Web Console 中切换到 管理员 视图。
  2. 导航到 Marketplace > Cluster Plugins,用于 Agnostic cluster plugins;或者进入 Agnostic operators 的 operator 工作流。
  3. 选择目标 plugin 或 operator 并触发升级。

每个 Agnostic plugin 是否需要在本窗口中升级,取决于其自身的 Kubernetes 兼容性——请查看该 plugin 的 release notes,以了解其与业务集群已达到的新 Kubernetes 版本的兼容性。

如果 Marketplace 未在该业务集群上提供某个 operator 的目标版本,请先为该 operator 按照确保 Aligned operator 包可用处理,然后重试 Marketplace 升级。

验证升级

在业务集群及其正在使用的 Agnostic plugins 达到目标后,完成升级验证

相关文档