升级 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. 进入 Clusters > Clusters
  3. 点击 global 集群,打开其详情视图。
  4. 切换到 功能组件 标签页。
  5. 点击 升级 按钮。

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

INFO

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

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

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:" – 表示这些键存在于 备用集群,但主集群不存在。请与运维团队确认后再删除。