升级集群
AC CLI 提供管理员命令,用于准备升级元数据、查看集群升级状态以及请求集群升级。
当您需要执行以下操作时,请使用这些命令:
- 创建目标版本的
ProductManifest - 检查当前集群版本和可用更新
- 请求升级到最新版本
- 请求升级到指定版本
- 查看预检结果和升级执行进度
开始之前
在 ACP 中,availableUpdates 不是您手动维护的静态列表。升级控制器必须先看到目标版本的 ProductManifest,才能发布集群的可用升级目标。
如果您没有先创建 ProductManifest,常见现象包括:
ac adm upgrade不显示任何availableUpdatesac adm upgrade --to-latest立即失败- 只能使用
--allow-explicit-upgrade手动请求版本
推荐流程是:
- 决定您想发布或升级到哪个版本。
- 为该版本创建
ProductManifest。 - 等待升级元数据被处理。
- 运行
ac adm upgrade并确认availableUpdates已填充。 - 请求升级。
前提条件
在运行升级相关命令之前,请确保:
- 您已登录到 ACP 平台。
- 您拥有集群管理员或等效权限。
- 您知道目标集群名称。如果省略,
ac adm upgrade默认使用global。 - 目标环境已安装
ProductManifestCRD 和升级控制器。
您可以先确认当前上下文:
当前上下文仍决定 AC 命令使用的凭据和端点。
- 对于
ac adm upgrade和ac adm upgrade status,目标集群仍通过--cluster显式选择,默认是global。 - 对于
ac adm release import-manifest,AC 首先检查当前上下文的 REST URL。如果指向 ACP 工作负载路径,AC 会自动重写请求到匹配的 global 路径。如果当前上下文不是 ACP 工作负载/global URL,AC 则按原样使用当前上下文,不需要 kubeconfig 会话扩展。
如有需要,先切换到另一个 ACP 会话:
创建 ProductManifest
使用以下命令为目标版本创建 ProductManifest:
此命令创建控制器所需的最小升级元数据对象:
metadata.name使用带前缀v的版本名,例如v4.20.0spec.version使用您传入的版本,例如4.20.0
如果您希望命令等待对象变为 Ready,添加 --wait:
您也可以覆盖等待超时时间:
命令行为:
--version是必需的。- 如果
ProductManifest不存在,AC 会创建它。 - 如果
ProductManifest已存在且版本相同,命令成功且不做更改。 - 如果
ProductManifest已存在但版本不同,命令失败且不覆盖现有对象。 - 默认情况下,命令不等待 Ready,只有显式传入
--wait时才等待。
查看升级状态和可用更新
创建 ProductManifest 后,使用以下命令查看默认 global 集群的升级摘要:
此命令通常显示:
- 当前集群版本
- 如果已请求升级,显示目标版本
- 当前可用更新列表
- 整体升级条件
当您想快速了解以下问题时使用:
- 集群当前运行的是哪个版本?
- 是否已请求目标版本?
- 现在是否有新的升级目标可用?
- 集群当前状态是
Ready、Reconciling还是Degraded?
查询特定集群时,添加 --cluster:
如果刚创建了 ProductManifest 但仍未看到 availableUpdates,控制器可能还在处理元数据。稍等片刻后再次运行 ac adm upgrade。
升级到最新版本
当存在 availableUpdates 时,使用以下命令请求升级到最新版本:
AC 会从 availableUpdates 中选择最高版本并提交升级请求。
--to-latest 是布尔标志,默认值为 false,含义如下:
- 如果不指定,AC 行为相当于
--to-latest=false。 - 如果单独指定
--to-latest,AC 视为true。 - 也可以显式写成
--to-latest=true或--to-latest=false。
如果没有 availableUpdates,命令失败且不提交新目标版本。
请求升级后,再次查看摘要:
升级到指定版本
如果想升级到指定版本,运行:
示例:
典型场景包括:
- 不想升级到最新版本
- 遵循发布流程中的批准目标版本
- 想重试已知的目标版本
默认情况下,请求的版本必须已出现在 availableUpdates 中,否则命令失败。
如果您有意请求不在 availableUpdates 中的版本,添加:
--allow-explicit-upgrade 默认值为 false:
- 如果不指定,AC 行为相当于
--allow-explicit-upgrade=false。 - 如果单独指定,AC 视为
true。 - 也可以显式写成
--allow-explicit-upgrade=true或--allow-explicit-upgrade=false。
示例:
此标志仅改变客户端验证,升级控制器及其预检仍决定请求的目标是否可执行。
查看详细升级状态
需要更深入诊断时,运行:
查看特定集群:
与 ac adm upgrade 相比,此命令扩展显示:
- 当前版本、目标版本和整体条件摘要
- 当前升级目标的预检结果
- 升级阶段和操作进度
预检结果
预检描述升级是否可以进入执行阶段。每项检查通常包括:
- 检查名称
- 重入策略
- 状态
- 原因
- 消息
状态解释如下:
Passed:检查通过。Retry:检查尚未得出最终结果,请等待后重试。Failed:存在阻塞条件,必须先处理。
如果尚无预检数据,视为“尚无结果”,而非“所有检查通过”。
升级阶段
升级进入执行后,状态输出显示阶段和操作进度。
阶段输出可能包括:
- 阶段名称
- 优先级
- 阶段状态
操作输出可能包括:
- 操作名称
- 动作
- 当前版本
- 目标版本
- 阶段状态
阶段状态解释:
Pending:阶段尚未开始。Running:阶段正在进行中。Finished:阶段已完成。
如果尚无阶段数据,说明升级可能尚未进入执行阶段。
常见信号和故障排查
查看升级状态时,请参考以下指南:
Ready通常表示集群已达到目标状态。Reconciling通常表示集群仍在应用当前升级请求。Degraded通常表示升级被阻塞或遇到错误。
当 ac adm upgrade 不显示任何 availableUpdates 时,先检查:
- 是否已创建目标版本的
ProductManifest? - 如果使用了
--wait,ProductManifest是否达到Ready=True? - 控制器是否有足够时间处理新元数据?
当 ac adm upgrade 显示目标版本但升级未推进时:
- 运行
ac adm upgrade status。 - 检查是否有预检项处于
Retry或Failed。 - 查看升级阶段是否已开始。
当升级已在进行中:
- 运行
ac adm upgrade status。 - 查看当前阶段和操作状态。
- 比较当前版本与目标版本。