在 DR 环境中升级 global 集群
当环境同时包含主 global 集群和备用 global 集群时,请使用此操作步骤。DR 相关步骤是在 Upgrade the global cluster 的标准 CVO 工作流之外附加的。
目录
升级操作步骤升级操作步骤
在升级前验证 DR 环境
请执行常规的 global DR 检查操作步骤,确保 备用 global 集群 中的数据与 主 global 集群 一致。有关 DR 拓扑和同步工作流的背景信息,请参见 Global Cluster Disaster Recovery。
如果检测到不一致,请不要在下一步卸载 etcd 同步插件,并在继续之前联系技术支持。如果在备用 global 集群缺少主集群持有的数据时卸载该插件,可能会导致 owner reference 解析错误,并且工作负载集群的 Machine 节点对象——包括 immutable-OS 集群(在这种情况下会销毁其底层虚拟机)——可能会被删除。
在两个 global 集群上运行以下命令,确保没有处于非运行状态的 Machine 节点:
如果存在此类节点,请先解决后再继续。
从备用 global 集群卸载 etcd 同步插件
- 通过 IP 或 VIP 访问 备用 global 集群 的 Web Console。
- 切换到 Administrator 视图。
- 导航到 Marketplace > Cluster Plugins 并选择
global集群。 - 找到 etcd Synchronizer 并将其卸载。
- 等待卸载完成后再继续。
在两个 global 集群上同步升级制品
在备用 global 集群和主 global 集群上都完成 Sync upgrade artifacts。两个集群必须使用相同的 registry 类型和完全一致的目标版本负载。对于外部 registry,针对这两个 global 集群使用的每个 registry endpoint,都要完成两种上传模式。
升级备用 global 集群
如果要在备用 global 集群上使用 Web Console,请确认备用集群 ProductBase 的 spec.alternativeURLs 中包含备用 VIP:
同步完成后,在备用 global 集群上执行剩余的标准工作流步骤:
- 运行 preflight 检查。
- 部署 cluster version operator。
- 发起升级请求。
- 观察执行过程,直到备用 global 集群达到目标版本。
升级主 global 集群
当备用 global 集群达到目标版本后,在主 global 集群上执行剩余的标准工作流步骤:
- 运行 preflight 检查。
- 部署 cluster version operator。
- 发起升级请求。
- 观察执行过程,直到主 global 集群达到目标版本。
重新安装 etcd 同步插件并验证同步状态
重新安装插件之前,请确认当使用该转发模式时,端口 2379 已从两个 global 集群的 VIP 正确转发到其控制平面节点。如果备用 global 集群可以直接访问活动 global 集群,则不需要通过负载均衡器进行端口转发。
从活动集群获取活动 global 集群 API server 的 bearer token,然后使用该 token 在备用集群上创建或更新 etcd-sync-active-cluster-token Secret。请仅在当前 shell 中保留该 token,并在 Secret 创建后将其清除。
在备用集群上运行:
要重新安装插件:
- 通过其 VIP 访问 备用 global 集群 Web Console,并切换到 Administrator 视图。
- 导航到 Marketplace > Cluster Plugins 并选择
global集群。 - 找到 etcd Synchronizer,单击 Install,并配置所需参数。
配置插件时:
- 将 Active Global Cluster VIP 设置为活动 global 集群的 VIP。
- 当端口
2379未通过负载均衡器转发时,请正确设置 Active Global Cluster ETCD Endpoints。 - 将 Standby Cluster ETCD Endpoints 设置为备用集群的 etcd 地址。除非本地 etcd service 通过其他 endpoint 暴露,否则请使用默认值。
- 将 Active Global Cluster Token Secret 设置为
etcd-sync-active-cluster-token。 - 使用 Data Check Interval 的默认值。
- 除非正在排查问题,否则保持 Print detail logs 禁用。
在重新安装期间,系统会先运行 etcd-sync-bootstrap Job,然后才会启动 etcd-sync Deployment。请验证 bootstrap Job 和运行时资源:
验证备用 global 集群上的同步 Pods 和当前 leader:
如果具有 ownerReference 依赖关系的资源需要重新同步,请在出现 Start Sync update 后重新创建当前 leader Pod:
检查同步状态:
LOCAL ETCD missed keys:这些 key 存在于主 global 集群中,但在备用集群中缺失。通常在重启当前etcd-syncleader Pod 后会得到解决。LOCAL ETCD surplus keys:这些 key 存在于备用 global 集群中,但不在主集群中。在删除之前,请与运维团队一起审查这些 key。
验证成功后,请从插件设置或 release values 中移除任何剩余的旧版明文 token 配置。如果活动集群 token 或远程 etcd-ca 之后发生变化,请再次执行插件升级或重新安装工作流,以便 etcd-sync-bootstrap 刷新运行时凭据和证书。
在两个 global 集群都已在目标版本下恢复健康且同步已恢复后,请继续执行 Upgrade Workload Clusters 或 Upgrade Validation。