升级前准备

支持的升级路径:

  • 4.04.3
  • 4.14.3
  • 4.24.3

开始之前,请确保当前平台版本位于支持的升级范围内。

Alauda Database Service for MySQL v4.3.0 中已移除 MySQL-PXC

如果你有 MySQL-PXC 实例,在升级到 ACP v4.3.0 或更高版本后(同时 MySQL operator 也会升级),这些实例将变为 unmanaged。迁移说明请参见 MySQL Operator Upgrade Guide

INFO

在 Immutable Infrastructure(Huawei DCS、VMware vSphere、Huawei Cloud Stack 和裸金属 immutable OS)上,上述支持的升级路径适用于 ACP Distribution Version;它仍会通过 Cluster Version Operator 直接升级到目标版本。当目标 ACP 版本比集群当前版本高出超过一个 Kubernetes minor 版本时,Kubernetes 升级需要额外预先准备中间版本的制品。开始升级窗口前,请先参见 Preparing for Cross-Version Upgrades

重要说明

  • 确保 global cluster 控制平面节点上的目录 /cpaas/minio 至少有 120 GB 的可用磁盘空间。
  • 在将 global tier 升级到 ACP 4.3 之前,所有 workload cluster 必须保持在 Kubernetes Support Matrix 中记录的 ACP 4.3 兼容版本范围内。
  • 如果某个 workload cluster 超出该兼容范围,请先升级该 workload cluster,直到其进入 ACP 4.3 兼容范围后,再升级 global tier。
  • workload cluster 只能升级到 global tier 已经达到的 Distribution Version。

升级前验证模块稳定性

集群升级前置检查要求目标集群上所有已安装的 CoreAligned 插件模块都处于稳定状态。如果任何此类模块正处于安装中、升级中或失败状态,ModuleInfoStableClusterModuleStable 前置检查都会阻止升级,直到问题得到解决。常见原因是,在请求集群升级时,某个独立的插件升级仍在运行。

在请求升级之前,请列出目标集群上已安装的模块,并确认每个模块都处于 Running 阶段:

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,PHASE:.status.phase'

同时确认集群模块本身不处于部署或升级失败状态:

kubectl get clustermodule <cluster> -o jsonpath='{.status.base.deployStatus}{"\n"}'

每个模块的 PHASE 都必须是 Running,并且 deployStatus 不能是 UpgradingDeployFailedUpgradeFailed。如果某个模块仍在升级,请等待其进入 Running;如果某个模块是 FailedBlocked,请先解决问题,再请求集群升级。

为离线环境下载软件包

生产维护窗口通常会在同一个窗口内升级 CoreAligned 插件(与相同 ACP 版本一起发布的集群插件和 operator),以及正在使用的 Agnostic 插件(独立发布的集群插件和 operator)。在升级开始前,请为每个已安装的 Aligned 插件准备目标版本软件包。也请为你计划在同一窗口中升级的 Agnostic 插件做好准备,尽管它们不会阻塞 CVO 升级。保留某个 Agnostic 插件的升级通常会在之后迫使你再开启一次维护窗口。

步骤 1:下载 Core 软件包

Customer Portal 下载 Core Package。Core 包只包含 upgrade.sh 会为 CVO 驱动的 Core 升级准备的 Core 制品

Core 包不会捆绑 Aligned 插件包,即使 CVO 知道哪些 Aligned 插件版本对应目标 ACP 发布版本。Aligned 插件包必须单独从 Customer Portal 下载,并使用 violet 推送;下一步会介绍该流程以及 Agnostic 插件的处理方式。

步骤 2:清点适用范围内每个集群上的插件

Cluster plugin 和 operator 的管理机制不同。在这一步中,两者都需要:

  • Cluster plugin 是全局资源。推送到 global tier 的 cluster plugin 会变成平台中每个集群都可安装和升级;每个 cluster plugin 只需推送一次。
  • Operator 作用域限定为单个集群。将 operator 推送到 global tier 是推荐的起点,但在某个 workload cluster 升级之前,该集群上也必须可用同一个 operator 包。

进入 Customer Portal 中的 CLI Tools 部分并下载 violet 工具。上传 Aligned 和 Agnostic 插件包需要使用 violet。有关 violet 的更多信息,请参见 Upload Packages

在任何一台可以访问 平台端点的机器上,运行 violet list 来列出当前环境中已安装的插件(包括 Aligned 和 Agnostic),并将结果导出到 ./apps.yaml

violet list \
  --platform-address "https://<your-platform-domain>" \
  --platform-token "<platform_token>" \
  --output-file "./apps.yaml"

请优先使用 --platform-token,而不是 --platform-password,以避免在 shell 历史记录和进程列表(ps aux)中暴露密码。

步骤 3:对齐 Customer Portal 中的软件包列表

将导出的 apps.yaml 文件导入 Customer Portal,使软件包列表与你的集群当前运行的内容保持一致。随后门户会提供匹配的目标版本软件包——Core、Aligned 插件,以及你的集群使用的 Agnostic 插件——供下载。

请下载你需要的所有软件包,确保在升级窗口开始前它们都已在本地可用。下一页 升级 global cluster 介绍了 upgrade.shviolet 如何将这些软件包推送到平台中。该推送会将镜像上传到 registry,并在平台目录中注册目标版本,使其可用于安装或升级;它不会升级任何已经运行的插件,因此可以在维护窗口之前的任何时间完成。

必需的 Aligned 插件包

从 ACP 4.3 开始,被升级集群上安装的每个 Aligned 插件都必须在升级请求之前通过 violet 发布其目标版本包。请使用 Customer Portal 为目标 ACP Distribution Version 提供的软件包;插件自身的版本号不需要与 ACP 版本字符串一致。

cluster plugin 包只需发布一次到 global tier。operator 包则需要发布到安装了该 operator 的每个集群。对于未安装在该集群上的 Aligned 插件,CVO 不需要其目标软件包。

如果缺少必需的软件包,或者软件包尚未就绪,CVO 会使集群升级停滞。你可以在阻塞发生后再发布该软件包;CVO 会检测到新可用的软件包,并自动继续现有的升级请求。

WARNING

如果你正在 从 ACP 4.0 升级到 ACP 4.3,并且任何目标集群上安装了 Build of TopoLVM,请在继续升级之前先将 TopoLVM 软件包上传到这些集群。若从 ACP 4.1 或 ACP 4.2 升级,则不需要此步骤。你可以在 --clusters 中指定多个目标集群,并用逗号分隔。

violet push <path/to/directory/only_put_topolvm_plugin_here> \
  --platform-address "https://example.com" \
  --platform-token "<platform_token>" \
  --clusters "cluster-a,cluster-b"
WARNING

从 v4.2 开始,我们引入了一个名为 Alauda Container Platform Log Essentials 的新插件。如果你之前安装了 log storage plugin,也必须在开始升级前上传该插件。