升级 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,可以提前将它们的镜像推送到 global 集群的镜像仓库。 批量上传说明请参见仅推送目录中所有软件包的镜像

提示

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

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

WARNING

使用 violet 向备用集群上传软件包时,必须指定参数 --dest-repo <备用集群的 VIP 地址>
否则软件包会上传到 主集群 的镜像仓库,导致备用集群无法安装或升级扩展。

同时,必须提供备用集群镜像仓库的认证信息,或者使用 --no-auth 参数。

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

触发升级

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

bash upgrade.sh --skip-sync-image

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

如果您已提前将 Operator 和 Cluster Plugin 镜像推送到 global 集群的镜像仓库,可以接着执行仅创建目录中所有软件包的 CR。执行后等待约 10–15 分钟,直到功能组件出现升级通知。随后即可在后续升级步骤中一并升级 Operator 和 Cluster Plugin。

升级 global 集群

警告

如果平台安装了 Data Services,升级集群时必须同步升级相关扩展。
详情请参见升级 Data Services

  1. 登录 global 集群的 Web 控制台,切换到 Administrator 视图。
  2. 进入 Clusters > Clusters
  3. 点击 global 集群,打开其详情视图。
  4. 切换到 Functional Components 标签页。
  5. 点击 Upgrade 按钮。

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

提示
  • 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. 进入 Administrator

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

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

升级后操作

global DR 操作步骤

验证数据一致性

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

若发现不一致,请先联系技术支持,切勿继续操作。

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

kubectl get machines.platform.tkestack.io

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

卸载 etcd 同步插件

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

上传镜像

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

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

升级备用集群

提示

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

升级前,请确认备用集群的 ProductBase 资源中 spec.alternativeURLs 配置了集群 VIP。

若未配置,请更新为:

apiVersion: product.alauda.io/v1alpha2
kind: ProductBase
metadata:
  name: base
spec:
  alternativeURLs:
    - https://<备用集群-vip>

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

升级主集群

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

重新安装 etcd 同步插件

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

重新安装步骤:

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

验证安装:

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