升级集群

AC CLI 提供管理员命令,用于准备升级元数据、查看集群升级状态以及请求集群升级。

当您需要执行以下操作时,请使用这些命令:

  • 创建目标版本的 ProductManifest
  • 检查当前集群版本和可用更新
  • 请求升级到最新版本
  • 请求升级到指定版本
  • 查看预检结果和升级执行进度

开始之前

在 ACP 中,availableUpdates 不是您手动维护的静态列表。升级控制器必须先看到目标版本的 ProductManifest,才能发布集群的可用升级目标。

如果您没有先创建 ProductManifest,常见现象包括:

  • ac adm upgrade 不显示任何 availableUpdates
  • ac adm upgrade --to-latest 立即失败
  • 只能使用 --allow-explicit-upgrade 手动请求版本

推荐流程是:

  1. 决定您想发布或升级到哪个版本。
  2. 为该版本创建 ProductManifest
  3. 等待升级元数据被处理。
  4. 运行 ac adm upgrade 并确认 availableUpdates 已填充。
  5. 请求升级。

前提条件

在运行升级相关命令之前,请确保:

  • 您已登录到 ACP 平台。
  • 您拥有集群管理员或等效权限。
  • 您知道目标集群名称。如果省略,ac adm upgrade 默认使用 global
  • 目标环境已安装 ProductManifest CRD 和升级控制器。

您可以先确认当前上下文:

ac config current-context

当前上下文仍决定 AC 命令使用的凭据和端点。

  • 对于 ac adm upgradeac adm upgrade status,目标集群仍通过 --cluster 显式选择,默认是 global
  • 对于 ac adm release import-manifest,AC 首先检查当前上下文的 REST URL。如果指向 ACP 工作负载路径,AC 会自动重写请求到匹配的 global 路径。如果当前上下文不是 ACP 工作负载/global URL,AC 则按原样使用当前上下文,不需要 kubeconfig 会话扩展。

如有需要,先切换到另一个 ACP 会话:

# 切换到另一个 ACP 会话
ac config use-session production

创建 ProductManifest

使用以下命令为目标版本创建 ProductManifest

ac adm release import-manifest --version 4.20.0

此命令创建控制器所需的最小升级元数据对象:

  • metadata.name 使用带前缀 v 的版本名,例如 v4.20.0
  • spec.version 使用您传入的版本,例如 4.20.0

如果您希望命令等待对象变为 Ready,添加 --wait

ac adm release import-manifest --version 4.20.0 --wait

您也可以覆盖等待超时时间:

ac adm release import-manifest --version 4.20.0 --wait --timeout=10m

命令行为:

  • --version 是必需的。
  • 如果 ProductManifest 不存在,AC 会创建它。
  • 如果 ProductManifest 已存在且版本相同,命令成功且不做更改。
  • 如果 ProductManifest 已存在但版本不同,命令失败且不覆盖现有对象。
  • 默认情况下,命令不等待 Ready,只有显式传入 --wait 时才等待。

查看升级状态和可用更新

创建 ProductManifest 后,使用以下命令查看默认 global 集群的升级摘要:

ac adm upgrade

此命令通常显示:

  • 当前集群版本
  • 如果已请求升级,显示目标版本
  • 当前可用更新列表
  • 整体升级条件

当您想快速了解以下问题时使用:

  • 集群当前运行的是哪个版本?
  • 是否已请求目标版本?
  • 现在是否有新的升级目标可用?
  • 集群当前状态是 ReadyReconciling 还是 Degraded

查询特定集群时,添加 --cluster

ac adm upgrade --cluster=workload-a

如果刚创建了 ProductManifest 但仍未看到 availableUpdates,控制器可能还在处理元数据。稍等片刻后再次运行 ac adm upgrade

升级到最新版本

当存在 availableUpdates 时,使用以下命令请求升级到最新版本:

ac adm upgrade --to-latest

AC 会从 availableUpdates 中选择最高版本并提交升级请求。

--to-latest 是布尔标志,默认值为 false,含义如下:

  • 如果不指定,AC 行为相当于 --to-latest=false
  • 如果单独指定 --to-latest,AC 视为 true
  • 也可以显式写成 --to-latest=true--to-latest=false

如果没有 availableUpdates,命令失败且不提交新目标版本。

请求升级后,再次查看摘要:

ac adm upgrade

升级到指定版本

如果想升级到指定版本,运行:

ac adm upgrade --to=<version>

示例:

ac adm upgrade --to=4.20.0

典型场景包括:

  • 不想升级到最新版本
  • 遵循发布流程中的批准目标版本
  • 想重试已知的目标版本

默认情况下,请求的版本必须已出现在 availableUpdates 中,否则命令失败。

如果您有意请求不在 availableUpdates 中的版本,添加:

ac adm upgrade --to=<version> --allow-explicit-upgrade

--allow-explicit-upgrade 默认值为 false

  • 如果不指定,AC 行为相当于 --allow-explicit-upgrade=false
  • 如果单独指定,AC 视为 true
  • 也可以显式写成 --allow-explicit-upgrade=true--allow-explicit-upgrade=false

示例:

ac adm upgrade --to=4.20.0 --allow-explicit-upgrade=true

此标志仅改变客户端验证,升级控制器及其预检仍决定请求的目标是否可执行。

查看详细升级状态

需要更深入诊断时,运行:

ac adm upgrade status

查看特定集群:

ac adm upgrade status --cluster=workload-a

ac adm upgrade 相比,此命令扩展显示:

  • 当前版本、目标版本和整体条件摘要
  • 当前升级目标的预检结果
  • 升级阶段和操作进度

预检结果

预检描述升级是否可以进入执行阶段。每项检查通常包括:

  • 检查名称
  • 重入策略
  • 状态
  • 原因
  • 消息

状态解释如下:

  • Passed:检查通过。
  • Retry:检查尚未得出最终结果,请等待后重试。
  • Failed:存在阻塞条件,必须先处理。

如果尚无预检数据,视为“尚无结果”,而非“所有检查通过”。

升级阶段

升级进入执行后,状态输出显示阶段和操作进度。

阶段输出可能包括:

  • 阶段名称
  • 优先级
  • 阶段状态

操作输出可能包括:

  • 操作名称
  • 动作
  • 当前版本
  • 目标版本
  • 阶段状态

阶段状态解释:

  • Pending:阶段尚未开始。
  • Running:阶段正在进行中。
  • Finished:阶段已完成。

如果尚无阶段数据,说明升级可能尚未进入执行阶段。

常见信号和故障排查

查看升级状态时,请参考以下指南:

  • Ready 通常表示集群已达到目标状态。
  • Reconciling 通常表示集群仍在应用当前升级请求。
  • Degraded 通常表示升级被阻塞或遇到错误。

ac adm upgrade 不显示任何 availableUpdates 时,先检查:

  1. 是否已创建目标版本的 ProductManifest
  2. 如果使用了 --waitProductManifest 是否达到 Ready=True
  3. 控制器是否有足够时间处理新元数据?

ac adm upgrade 显示目标版本但升级未推进时:

  1. 运行 ac adm upgrade status
  2. 检查是否有预检项处于 RetryFailed
  3. 查看升级阶段是否已开始。

当升级已在进行中:

  1. 运行 ac adm upgrade status
  2. 查看当前阶段和操作状态。
  3. 比较当前版本与目标版本。

示例工作流程

# 1. 为目标版本创建 ProductManifest
ac adm release import-manifest --version 4.20.0 --wait

# 2. 查看默认 global 集群的升级摘要
ac adm upgrade

# 3. 查看特定集群的摘要
ac adm upgrade --cluster=workload-a

# 4. 请求升级到最新可用版本
ac adm upgrade --to-latest

# 5. 查看详细状态
ac adm upgrade status --cluster=workload-a

# 6. 请求升级到指定版本
ac adm upgrade --cluster=workload-a --to=4.20.0

# 7. 明确请求不在 availableUpdates 中的版本
ac adm upgrade --cluster=workload-a --to=4.20.0 --allow-explicit-upgrade