跳到主要内容

观察 ResourceSync:资源骨架与两阶段恢复

ResourceSync 负责同步 Kubernetes 资源清单。它让目标集群提前拥有可切换的资源骨架,并在 Failover 时快速激活。

这也是 V2 Pilot Light(长明火)切换模式的基础:备集群先有 standby 资源,切换时再由 Failover 拉起工作负载。完整切换步骤见 容灾切换流程

本页继续使用实例 docs-walkthrough-20260511。实例详情页的 资源同步策略 标签可以同时查看资源同步和数据同步状态。

资源与数据同步状态

同步内容

通常包括:

  • Deployment、StatefulSet、DaemonSet。
  • Service。
  • ConfigMap、Secret。
  • PVC 资源对象。
  • Ingress。
  • 其他业务命名空间资源。

Standby Modifier

目标集群资源恢复后,工作负载通常保持 standby。例如 Deployment 副本数被设置为 0,原始副本数以 annotation 或状态记录保存。

Failover 时,operator 按记录恢复副本数。

页面模块

详情页的同步状态来自接口:

GET /apis/disasterinstances.testudo.softcdata.com/v1/instances/:name/sync-status

页面分为两张同步卡片:

卡片对应对象用途
资源同步ResourceSync同步 Kubernetes 资源骨架,例如 Deployment、Service、ConfigMap、Secret、PVC 等。
数据同步任务DataSync同步数据面资源,例如 PVC/PV 和与数据恢复相关的对象。

每张卡片包含:

  • 备份:本次同步备份到的资源数量。
  • 恢复:恢复到目标集群的资源数量。
  • 状态Ready 在界面展示为 就绪
  • 上次备份成功:来自子资源最近一次成功同步时间。
  • 成功率:根据成功/失败次数计算。

本次真实验证中:

同步对象状态备份数量恢复数量最近成功时间
ResourceSyncReady942026-05-11 09:39:07
DataSyncReady322026-05-11 09:39:40

两阶段恢复

ResourceSync 可以先恢复资源骨架,再配合 DataSync 恢复数据。这样做的好处是:

  • 目标集群提前暴露资源兼容性问题。
  • Failover 时不需要从零创建全部资源。
  • 演练时能复用同一套恢复策略。

查看状态

kubectl -n disaster-system get resourcesync dr-rs-docs-walkthrough-20260511
kubectl -n disaster-system describe resourcesync dr-rs-docs-walkthrough-20260511
kubectl -n disaster-system get datasync dr-ds-docs-walkthrough-20260511

验证目标侧 standby

kubectl --context <target-cluster> -n dr-pvc-src-170 get deploy,sts,pod,svc,pvc

期望工作负载存在,但副本数按 standby 策略保持为 0 或不对外服务。Service、ConfigMap、Secret 等资源应存在。

常见问题

  • 资源恢复成功但 selector 与 Service 不匹配。
  • Secret 没有恢复,Failover 后镜像拉取失败。
  • IngressClass 不匹配,目标 Ingress 不生效。
  • 目标集群缺少 CRD,自定义资源恢复失败。
  • 首次同步长时间停留在 InProgress 时,先看子资源事件,再看 AppBackup/AppRestore 是否还在等待 Velero 备份元数据同步。