DisasterInstance
DisasterInstance 是应用容灾保护的核心对象。用户创建它,operator 根据它派生同步链路和操作状态。
状态机
实例主要状态包括:
Pending:刚创建。Initializing:首次同步或派生资源初始化中。Protected:同步链路健康,实例处于受保护状态。Paused:同步暂停。FailingOver:故障切换中。Active:目标集群已激活。FailingBack:回切或反向切换中。ConfigError:配置不健康。Failed:执行失败。
对外聚合状态还会映射为 Running、Active、Paused、Transitioning、Failed、Unknown。
关键配置
实例通常包含:
- 源集群和目标集群。
- 被保护命名空间。
- 同步调度或手动触发策略。
- restore policy。
- StorageClass 映射。
- 资源选择、bulk modifier 或 reversible modifier。
- 通过
restorePolicy.bulkModifierActions[].action=rewriteImage配置业务镜像前缀重写。
应用范围限制
当前容灾实例的应用级保护对象是 Deployment 和 StatefulSet。Failover、回切、反向保护中的副本缩放、目标侧拉起和就绪检查都围绕这两类工作负载执行。
创建容灾实例时,控制台的保护命名空间列表来自源集群的 workloadNamespaceStats。operator 只会把包含运行中 Deployment 或 StatefulSet 的命名空间纳入这个列表:
- Deployment:
readyReplicas > 0或availableReplicas > 0。 - StatefulSet:
readyReplicas > 0。
Service、Ingress、ConfigMap、Secret、PVC 等资源会作为应用配套资源随数据同步和资源同步处理。只有裸 Pod、DaemonSet、Job 或 CronJob 的命名空间不会作为创建容灾实例时的可选保护应用范围。
派生资源
Operator 会为实例维护:
DataSync:同步数据。ResourceSync:同步资源。DisasterOperation:响应用户动作。
实例状态不应由用户直接修改,而应通过 API action 或 CRD spec 变更触发 operator 收敛。