升级 global 集群

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

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

如果 global 集群配置了 global DR(Disaster Recovery) 方案,请严格遵循 global DR 操作步骤。否则,请遵循 标准操作步骤

标准操作步骤

上传镜像

将 core package 复制到 global 集群的 任意控制平面节点。解压该 package,然后 cd 到解压后的目录。

  • 如果 global 集群使用 内置 registry,请运行:

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

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

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

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 中修复。它仅适用于 集群插件,不适用于 Operator

在运行 bash upgrade.sh --skip-sync-image 后,当 功能组件 选项卡中的 升级 按钮变为可用时,您可能会看到 Alauda Container Platform Base 等集群插件的 Target 版本显示为较低版本。

需要执行的操作: 您必须手动将这些集群插件的 Target 更改为 不升级。否则可能会导致集群插件降级到较旧版本。

升级 global 集群

  1. 登录 global 集群的 Web Console,并切换到 管理员 视图。
  2. 导航到 集群 > 集群
  3. 单击 global 集群,打开其详情视图。
  4. 转到 功能组件 选项卡。
  5. 单击 升级 按钮。

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

INFO
WARNING

ACP 4.2.1 中的已知问题:

该问题仅影响从 ACP 4.2.0 升级到 4.2.1 的场景,并将在 ACP 4.2.2 中修复。它仅适用于 集群插件,不适用于 Operator

功能组件 选项卡中完成升级后,升级 按钮对于集群插件可能仍然显示为可点击。

请不要再次单击集群插件的升级按钮。 如果您单击它,您会看到已经升级到新补丁版本的集群插件的 Target 显示为较低版本。再次升级会导致这些集群插件降级到较旧版本。

安装 Alauda Container Platform Cluster Enhancer 插件

INFO

此步骤仅用于确保已安装 cluster enhancer 插件。如果您发现该集群插件已经安装,则无需执行任何操作。

  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 集群一致。

如果检测到不一致,请不要执行下一步中的 etcd 同步插件卸载,并在继续之前联系技术支持。当备用 global 集群缺少主集群持有的数据时卸载该插件,可能会导致 owner reference 解析错误,并且 workload 集群中的 Machine 节点对象——包括 immutable-OS 集群,在这种情况下会破坏其底层虚拟机——可能会被删除。

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

kubectl get machines.platform.tkestack.io

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

卸载 etcd 同步插件

  1. 通过 IP 或 VIP 访问 备用集群的 Web Console。
  2. 切换到 管理员 视图。
  3. 导航到 Marketplace > 集群插件
  4. 务必确认您已切换到 global 集群。
  5. 找到 Alauda Container Platform etcd Synchronizer 插件并将其卸载。等待卸载完成。

上传镜像

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

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

升级备用集群

INFO

执行升级需要访问 备用集群 的 Web Console。

在继续之前,请确认备用集群的 ProductBase 资源已在 spec.alternativeURLs 下正确配置了 cluster VIP。

如果没有,请按如下方式更新配置:

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

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

升级主集群

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

重新安装 etcd 同步插件

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

重新安装:

  1. 通过 IP 或 VIP 访问 备用 global 集群的 Web Console。
  2. 切换到 管理员 视图。
  3. 转到 Marketplace > 集群插件
  4. 选择 global 集群。
  5. 找到 Alauda Container Platform etcd Synchronizer,单击 安装,并提供所需参数。

验证安装:

kubectl get po -n cpaas-system -l app=etcd-sync  # Ensure pod is 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"
# Wait until the logs contain "Start Sync update"

# Recreate the pod to trigger synchronization of resources with 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:" – 这些键存在于备用集群中,但在主集群中不存在。请在删除之前与运维团队一起检查这些键。