在 DR 环境中升级全局集群
当环境同时包含主全局集群和备用全局集群时,请使用此操作步骤。DR 特定步骤是在升级全局集群中的标准 CVO 工作流基础上执行的附加步骤。
目录
升级操作步骤升级操作步骤
升级前验证 DR 环境
按照常规的全局 DR 检查操作步骤,确保备用全局集群中的数据与主全局集群一致。有关 DR 拓扑和同步工作流的背景信息,请参阅全局集群灾难恢复。
如果检测到不一致,请勿在下一步卸载 etcd 同步插件,并在继续之前联系技术支持。在备用全局集群缺少主全局集群所持有的数据时卸载插件,可能导致所有者引用解析错误,并可能删除工作负载集群节点 Machine 对象,包括 Alauda OS 集群;在这种情况下,删除操作会销毁其后端虚拟机。
在两个全局集群上运行以下命令,确保没有 Machine 节点处于非运行状态:
如果存在此类节点,请先解决这些问题,然后再继续。
从备用全局集群卸载 etcd 同步插件
- 通过 IP 或 VIP 访问备用全局集群的 Web Console。
- 切换到管理员视图。
- 导航到Marketplace > 集群插件,并选择
global集群。 - 找到 全局集群灾难恢复,然后将其卸载。
- 等待卸载完成后再继续。
在两个全局集群上同步升级构件
在备用全局集群和主全局集群上完成同步升级构件。在两个集群上使用相同的 registry 类型和完全一致的目标版本负载。对于外部 registry,请为两个全局集群使用的每个 registry 端点完成两种上传模式。
升级备用全局集群
如果要在备用全局集群上使用 Web Console,请验证备用集群 ProductBase 在 spec.alternativeURLs 中包含备用 VIP:
同步完成后,在备用全局集群上执行其余标准工作流步骤:
- 运行升级前检查。
- 部署集群版本 operator。
- 请求升级。
- 观察执行过程,直到备用全局集群达到目标版本。
升级主全局集群
备用全局集群达到目标版本后,在主全局集群上执行其余标准工作流步骤:
- 运行升级前检查。
- 部署集群版本 operator。
- 请求升级。
- 观察执行过程,直到主全局集群达到目标版本。
重新安装 etcd 同步插件并验证同步状态
重新安装插件之前,请验证在使用该转发模式时,端口 2379 是否已从两个全局集群 VIP 正确转发到其控制平面节点。如果备用全局集群可以直接访问活动全局集群,则无需通过负载均衡器进行端口转发。
从活动集群获取活动全局集群 API 服务器的 bearer 令牌,然后使用该令牌在备用集群上创建或更新 etcd-sync-active-cluster-token Secret。仅在当前 shell 中保留该令牌,并在创建 Secret 后将其清除。
在备用集群上运行:
要重新安装插件:
- 通过 VIP 访问备用全局集群的 Web Console,并切换到管理员视图。
- 导航到Marketplace > 集群插件,并选择
global集群。 - 找到 全局集群灾难恢复,单击安装,并配置所需参数。
配置插件时:
- 将活动全局集群 VIP设置为活动全局集群的 VIP。
- 当端口
2379未通过负载均衡器转发时,正确设置活动全局集群 ETCD 端点。 - 将备用集群 ETCD 端点设置为备用集群 etcd 地址。除非本地 etcd 服务通过其他端点公开,否则使用默认值。
- 将活动全局集群令牌 Secret设置为
etcd-sync-active-cluster-token。 - 使用数据检查间隔的默认值。
- 除非正在进行故障排除,否则不要启用打印详细日志。
重新安装期间,系统会先运行 etcd-sync-bootstrap Job,然后启动 etcd-sync Deployment。验证引导 Job 和运行时资源:
在备用全局集群上验证同步 Pod 和当前 leader:
如果需要重新同步具有 ownerReference 依赖项的资源,请在 Start Sync update 出现后重新创建当前 leader Pod:
检查同步状态:
LOCAL ETCD missed keys:主全局集群中存在这些键,但备用集群中缺少这些键。重启当前etcd-syncleader Pod 后通常可以解决此问题。LOCAL ETCD surplus keys:备用全局集群中存在这些键,但主集群中不存在。请与运维团队一起检查这些键,然后再删除。
验证成功后,从插件设置或 release 值中移除所有剩余的旧版明文令牌配置。如果活动集群令牌或远程 etcd-ca 后续发生更改,请再次运行插件升级或重新安装工作流,以便 etcd-sync-bootstrap 刷新运行时凭据和证书。
两个全局集群在目标版本上均运行正常且同步已恢复后,继续执行升级工作负载集群或升级验证。如果 global 集群运行 Alauda OS,请先在两个 global 集群上运行Alauda OS 上的 Kubernetes 升级。