升级业务集群

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

ACP 4.3 对业务集群采用与 global 集群相同的基于 CVO 的工作流:确认前提条件、运行 preflight 检查、发起升级请求,以及观察执行过程。此工作流还有两条额外规则:

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

工作流

确认业务集群前提条件

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

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

运行 preflight 检查

在发起升级请求之前运行 preflight:

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

Preflight 会返回两部分内容:

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

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

有关 preflight 阻塞处理模式,请参见 按需处理 preflight 阻塞

发起升级请求

在 preflight 通过后,可选择以下任一入口:

  • 在 Web Console 中从业务集群发起升级。
  • 当当前 ACP 会话可以访问目标业务集群时,使用 ACP CLI。为避免歧义,请使用 --cluster 显式指定目标集群。

如果你是首次使用 ACP CLI,请参见 ACP CLI 入门。有关会话和集群选择,请参见 管理 CLI 配置文件

如果使用 Web Console,请求会遵循两步流程:

  • Step 1 中,查看 RPCH 列表。
  • 单击 Acknowledge 继续到 Step 2
  • Step 2 中,查看 Current VersionTarget Version。此阶段页面不会显示插件列表或警告 panel。
  • 目标版本是当前 global 集群版本,不能在 Web Console 中手动选择。
  • 单击 Start Upgrade
  • 请求提交后,页面会显示升级请求已提交,且操作进入进行中状态。

ACP CLI 示例:

# 请求升级到当前在 availableUpdates 中发布的最高版本
ac adm upgrade --cluster=<cluster> --to-latest

# 请求升级到指定目标版本
ac adm upgrade --cluster=<cluster> --to=4.3.0

ACP CLI 会为指定的业务集群提交所请求的目标版本。升级是否可以继续,仍由集群的可用升级目标和升级控制器的 preflight 检查决定。ACP CLI 不用于升级 global 集群。

有关完整的 AC CLI 升级工作流(元数据准备、available updates、请求模式和状态解读),请参见 升级集群。有关完整的命令和标志语法,请参见 AC CLI Administrator 命令参考

观察进度

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

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

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

# 显示目标集群升级的摘要、preflight 和阶段进度
ac adm upgrade status

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

排障时,请先检查 conditions、preflight 详情和历史记录:

kubectl -n cpaas-system get cvsh <cluster> \
  -o jsonpath='{range .status.conditions[*]}{.type}{"\t"}{.status}{"\t"}{.reason}{"\t"}{.message}{"\n"}{end}'

kubectl -n cpaas-system get cvsh <cluster> \
  -o jsonpath='{.status.preflight.observedAt}{"\n"}{range .status.preflight.checks[*]}{.name}{"\t"}{.policy}{"\t"}{.state}{"\t"}{.reason}{"\t"}{.message}{"\n"}{end}'

kubectl -n cpaas-system get cvsh <cluster> \
  -o jsonpath='{range .status.history[*]}{.version}{"\t"}{.state}{"\t"}{.startedTime}{"\t"}{.completionTime}{"\n"}{end}'

在所有业务集群都达到 ACP 4.3 后

在所有业务集群都达到 ACP 4.3 后,请按照 禁用 PKCE Plain 方法 完成 PKCE 安全加固。

相关文档