跳到主要内容

DisasterInstance

DisasterInstance 是应用容灾保护的核心对象。用户创建它,operator 根据它派生同步链路和操作状态。

状态机

实例主要状态包括:

  • Pending:刚创建。
  • Initializing:首次同步或派生资源初始化中。
  • Protected:同步链路健康,实例处于受保护状态。
  • Paused:同步暂停。
  • FailingOver:故障切换中。
  • Active:目标集群已激活。
  • FailingBack:回切或反向切换中。
  • ConfigError:配置不健康。
  • Failed:执行失败。

对外聚合状态还会映射为 RunningActivePausedTransitioningFailedUnknown

关键配置

实例通常包含:

  • 源集群和目标集群。
  • 被保护命名空间。
  • 同步调度或手动触发策略。
  • restore policy。
  • StorageClass 映射。
  • 资源选择、bulk modifier 或 reversible modifier。
  • 通过 restorePolicy.bulkModifierActions[].action=rewriteImage 配置业务镜像前缀重写。

应用范围限制

当前容灾实例的应用级保护对象是 Deployment 和 StatefulSet。Failover、回切、反向保护中的副本缩放、目标侧拉起和就绪检查都围绕这两类工作负载执行。

创建容灾实例时,控制台的保护命名空间列表来自源集群的 workloadNamespaceStats。operator 只会把包含运行中 Deployment 或 StatefulSet 的命名空间纳入这个列表:

  • Deployment:readyReplicas > 0availableReplicas > 0
  • StatefulSet:readyReplicas > 0

Service、Ingress、ConfigMap、Secret、PVC 等资源会作为应用配套资源随数据同步和资源同步处理。只有裸 Pod、DaemonSet、Job 或 CronJob 的命名空间不会作为创建容灾实例时的可选保护应用范围。

派生资源

Operator 会为实例维护:

  • DataSync:同步数据。
  • ResourceSync:同步资源。
  • DisasterOperation:响应用户动作。

实例状态不应由用户直接修改,而应通过 API action 或 CRD spec 变更触发 operator 收敛。