升级 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>
INFO

上传镜像通常需要约 2 小时,具体时间取决于您的网络和磁盘性能。如果您的平台使用 global DR,记得 备用 global 集群也需要上传镜像,请合理安排维护时间窗口。

触发升级

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

bash upgrade.sh --skip-sync-image

等待脚本执行完成后再继续。

升级 global 集群

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

在弹出的对话框中查看可用的组件更新,确认后继续。

INFO

升级 Kubernetes 版本为可选操作。但由于升级过程中可能出现服务中断,建议一并升级 Kubernetes,以避免多次维护窗口。

如果 global 集群中安装了 Alauda Container Platform GitOps,升级后插件的 Pod 出现异常运行,请参考升级 Alauda Container Platform GitOps

安装 Product Docs 插件

INFO

Alauda Container Platform Product Docs 插件提供平台内的产品文档访问。平台中的所有帮助链接均指向该文档。如果未安装此插件,点击平台中的帮助链接将导致 404 访问错误。

从 ACP 4.0 开始,内置产品文档已拆分为 Alauda Container Platform Product Docs 插件。如果您从 3.18 版本升级,需要按照以下步骤安装此插件:

  1. 进入 管理员 页面。

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

  3. 找到 Alauda Container Platform Product Docs 插件,点击 安装

global DR 操作步骤

比较数据一致性

  1. 按照常规 global DR 检查流程,确保 备用 global 集群 的数据与 主 global 集群 一致。如发现不一致,请联系技术支持,切勿继续操作。

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

    kubectl get machines.platform.tkestack.io

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

卸载 etcd 同步插件

从 3.18 升级
从 3.16 升级
  1. 通过 IP 或 VIP 访问 主 global 集群 的 Web 控制台。
  2. 切换到 平台管理 视图。
  3. 进入 目录 > 集群插件
  4. 从集群下拉框选择 global
  5. 找到 EtcdSync 插件,点击 卸载,等待卸载完成。

升级备用 global 集群

按照标准操作步骤中描述的流程,先升级 备用 global 集群

升级主 global 集群

备用集群升级完成后,按照相同的标准操作步骤升级 主 global 集群

重新安装 etcd 同步插件

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

重新安装步骤:

  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:" – 备用集群存在但主集群缺失的键,请与运维团队确认后再删除。