5.8. 恢复 OpenShift Data Foundation 扩展集群


鉴于扩展集群灾难恢复解决方案是在环境出现完全或部分中断的情况下提供弹性,因此了解应用程序及其存储的不同恢复方法非常重要。

应用程序的架构如何确定其在活动区域中再次可用的时间。

根据站点中断,有不同的恢复方法及其存储。恢复时间取决于应用程序架构。不同的恢复方法如下:

5.8.1. 了解区失败

在本小节中,区失败代表区中的所有 OpenShift Container Platform、master 和 worker 节点不再与第二个数据区中的资源通信(例如,关闭节点)。如果数据区域之间的通信仍处于部分工作状态(不正常启动或关闭),集群、存储和网络管理员应断开数据区域之间的通信路径,以便成功恢复。

重要

安装示例应用程序时,请关闭 OpenShift Container Platform 节点(至少使用 OpenShift Data Foundation 设备的节点)来测试数据区的故障,以验证 file-uploader 应用程序是否可用,您可以上传新文件。

5.8.2. 使用 RWX 存储恢复区域感知 HA 应用程序

使用 topologyKey: topology.kubernetes.io/zone 部署的应用程序在每个数据区中调度了一个或多个副本,并使用共享存储,即 ReadWriteMany (RWX) CephFS 卷,在几分钟后终止自身,并处于待处理状态并处于待处理状态。

此类型的应用程序示例在 Install Zone Aware Sample Application 部分中进行了详细介绍。

重要

在区域恢复期间,如果应用 pod 进入 CrashLoopBackOff (CLBO)状态,并在挂载 CephFS 卷时显示 permission denied 错误,然后重启调度 pod 的节点。等待一段时间,然后检查 pod 是否再次运行。

5.8.3. 使用 RWX 存储恢复 HA 应用程序

使用 topologyKey: kubernetes.io/hostname 或没有拓扑配置的应用程序对同一区域中的所有应用副本没有保护。

注意

即使 Pod spec 中的 podAntiAffinitytopologyKey: kubernetes.io/hostname 也会发生,因为此反关联性规则基于主机而不是基于区域。

如果发生这种情况,且所有副本都位于失败的区域中,则使用 ReadWriteMany (RWX)存储的应用程序需要 6-8 分钟在活跃区域中恢复。此暂停时间用于故障区域中的 OpenShift Container Platform 节点变为 NotReady (60 秒),然后让默认 pod 驱除超时过期(300 秒)。

5.8.4. 使用 RWO 存储恢复应用程序

使用 ReadWriteOnce (RWO)存储的应用程序具有在此 Kubernetes 问题 中描述的已知行为。由于这个问题,如果数据区失败,挂载 RWO 卷(例如,基于 cephrbd 的卷)的区中的任何应用程序 pod 在 6-8 分钟后会一直处于 Terminating 状态,在没有手动干预的情况下不会在活动区域中重新创建。

检查 OpenShift Container Platform 节点,其状态为 NotReady。可能会出现阻止节点与 OpenShift 控制平面通信的问题。但是,节点可能仍然是针对持久性卷(PV)执行 I/O 操作。

如果两个 pod 同时写入同一 RWO 卷,则存在数据崩溃的风险。确保 NotReady 节点上的进程被终止或阻止,直到它们终止为止。

解决方案示例:

  • 使用带外管理系统在确认的情况下关闭节点,以确保进程终止。
  • 撤回故障站点的节点使用的网络路由与存储通信。

    注意

    在将服务恢复到失败的区域或节点前,请确认所有带有 PV 的 pod 已被成功终止。

要让 Terminating pod 在活跃区中重新创建,您可以强制删除 pod 或删除关联的 PV 上的终结器。完成这两个操作之一后,应用程序 Pod 应在活跃区域中重新创建,并成功挂载其 RWO 存储。

强制删除 pod

强制删除不会等待 kubelet 确认 pod 已终止。

$ oc delete pod <PODNAME> --grace-period=0 --force --namespace <NAMESPACE>
<PODNAME>
是 pod 的名称
<NAMESPACE>
是项目命名空间
警告

OpenShift Data Foundation 不支持与非正常节点关闭相关的污点,用于自动 pod 驱除和卷分离操作。如需更多信息,请参阅 非正常节点关闭处理。在强制删除 pod 之前,您必须确保节点关闭或节点的网络路由被撤回。

5.8.5. 恢复 StatefulSet pod

作为 StatefulSet 一部分的 Pod 的问题与 pod 挂载 ReadWriteOnce (RWO)卷类似。Kubernetes 资源 StatefulSet 注意事项 中会引用更多信息。

要让 StatefulSet 的 pod 部分在 6-8 分钟后在活跃区中重新创建,您需要强制删除与带有 RWO 卷的 pod 相同的要求(即,关闭或断开连接通信)的 pod。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部