升级 global 集群

由一个 global 集群 和一个或多个 workload 集群 组成。global 集群 必须 在任何 workload 集群之前完成升级。

本文档将引导您完成 global 集群的升级操作步骤。

如果 global 集群配置了 global DR(灾难恢复) 方案,请严格按照global DR 操作步骤执行。否则,请按照标准操作步骤进行。

标准操作步骤

上传镜像

将核心软件包复制到 global 集群的 任意控制平面节点。解压软件包并进入解压后的目录。

  • 如果 global 集群使用 内置镜像仓库,执行:

    bash upgrade.sh --only-sync-image=true
  • 如果 global 集群使用 外部镜像仓库,还需提供仓库地址:

    bash upgrade.sh --only-sync-image=true --registry <registry-address> --username <username> --password <password>

如果计划在升级 global 集群时同时升级 OperatorCluster Plugin,请提前将对应的软件包推送到对应集群的镜像仓库。 批量上传说明请参见一次性推送所有软件包

INFO

上传镜像通常需要约 2 小时,具体时间取决于您的网络和磁盘性能。

如果您的平台配置了 global 灾难恢复(DR),请注意 备用 global 集群也需要上传镜像,请合理安排维护时间窗口。

有关 violet push 子命令的详细信息,请参见上传软件包

触发升级

镜像上传完成后,运行以下命令开始升级流程:

bash upgrade.sh --skip-sync-image

等待脚本执行完成后再继续。功能组件 标签页的升级按钮大约需要 10–15 分钟 后才会可用。之后您可以按照以下升级说明升级 OperatorCluster Plugin

WARNING

ACP 4.2.1 已知问题:

此问题仅影响从 ACP 4.2.0 升级到 4.2.1,将在 ACP 4.2.2 中修复。仅影响 cluster plugins,不影响 Operator

运行 bash upgrade.sh --skip-sync-image 后,当 功能组件 标签页的 升级 按钮可用时,您可能会看到诸如 Alauda Container Platform Base 等集群插件的 目标版本 显示为较低版本。

操作要求: 您必须手动将这些集群插件的 目标版本 改为 不升级。否则可能导致集群插件被降级到旧版本。

升级 global 集群

  1. 登录 global 集群的 Web 控制台,切换到 管理员 视图。
  2. 进入 集群 > 集群 页面。
  3. 点击 global 集群,打开其详情视图。
  4. 切换到 功能组件 标签页。
  5. 点击 升级 按钮。

在弹窗中查看可用组件更新,确认后继续。

INFO
WARNING

ACP 4.2.1 已知问题:

此问题仅影响从 ACP 4.2.0 升级到 4.2.1,将在 ACP 4.2.2 中修复。仅影响 cluster plugins,不影响 Operator

完成 功能组件 标签页升级后,集群插件的 升级 按钮可能仍显示为可点击。

请勿再次点击集群插件的升级按钮。 如果点击,已升级到新补丁版本的集群插件的 目标版本 会显示为较低版本。再次升级会导致这些集群插件被降级到旧版本。

安装 Alauda Container Platform Cluster Enhancer 插件

INFO

此步骤仅用于确保集群增强插件已安装。如果您发现该集群插件已安装,则无需操作。

  1. 进入 管理员 视图。

  2. 在左侧边栏点击 Marketplace > 集群插件,选择 global 集群。

  3. 找到 Alauda Container Platform Cluster Enhancer 插件,点击 安装

(条件)升级 Service Mesh Essentials

如果安装了 Service Mesh v1,请在升级 workload 集群前参考 Alauda Service Mesh Essentials 集群插件 文档。

升级后操作

global DR 操作步骤

验证数据一致性

按照常规 global DR 检查流程,确保 备用 global 集群 的数据与 主 global 集群 保持一致。

若发现不一致,请 联系技术支持 后再继续。

两个集群 上运行以下命令,确保没有处于非运行状态的 Machine 节点:

kubectl get machines.platform.tkestack.io

若存在此类节点,请联系技术支持解决后再继续。

卸载 etcd 同步插件

  1. 通过 IP 或 VIP 访问 备用集群 的 Web 控制台。
  2. 切换到 管理员 视图。
  3. 进入 Marketplace > 集群插件
  4. 确认已切换到 global 集群。
  5. 找到 Alauda Container Platform etcd Synchronizer 插件并 卸载,等待卸载完成。

上传镜像

备用集群 和主集群上均执行 上传镜像 步骤。

详情请参见标准操作步骤中的上传镜像

升级备用集群

INFO

需要访问 备用集群 Web 控制台以执行升级。

升级前,请确认备用集群的 ProductBase 资源已正确配置了集群 VIP,位于 spec.alternativeURLs 下。

如未配置,请更新为:

apiVersion: product.alauda.io/v1alpha2
kind: ProductBase
metadata:
  name: base
spec:
  alternativeURLs:
    - https://<standby-cluster-vip>

备用集群 上,按照标准操作步骤完成升级。

升级主集群

备用集群升级完成后,继续在 主集群 上执行标准操作步骤

重新安装 etcd 同步插件

重新安装前,请确认两个 global 集群 VIP 的端口 2379 已正确转发到各自的控制平面节点。

重新安装步骤:

  1. 通过 IP 或 VIP 访问 备用 global 集群 的 Web 控制台。
  2. 切换到 管理员 视图。
  3. 进入 Marketplace > 集群插件
  4. 选择 global 集群。
  5. 找到 Alauda Container Platform etcd Synchronizer,点击 安装 并填写所需参数。

验证安装:

kubectl get po -n cpaas-system -l app=etcd-sync  # 确认 Pod 状态为 1/1 Running

kubectl logs -n cpaas-system $(kubectl get po -n cpaas-system -l app=etcd-sync --no-headers | awk '{print $1}' | head -1) | grep -i "Start Sync update"
# 等待日志出现 "Start Sync update"

# 重建 Pod 以触发带 ownerReferences 的资源同步
kubectl delete po -n cpaas-system $(kubectl get po -n cpaas-system -l app=etcd-sync --no-headers | awk '{print $1}' | head -1)

检查同步状态

运行以下命令检查同步状态:

curl "$(kubectl get svc -n cpaas-system etcd-sync-monitor -ojsonpath='{.spec.clusterIP}')/check"

输出说明:

  • "LOCAL ETCD missed keys:" – 表示这些键存在于 主集群,但在备用集群缺失。通常重启 Pod 后会自动恢复。
  • "LOCAL ETCD surplus keys:" – 表示这些键存在于 备用集群,但主集群不存在。请与运维团队确认后再决定是否删除。