跳到主要内容

ResourceSync

ResourceSync 流程图

可编辑图源:resource-sync-flow.excalidraw

ResourceSync 负责同步 Kubernetes 资源,并把目标端资源恢复为 standby 形态。

输入

ResourceSync.spec 包含:

  • instance:父级实例名称。
  • trigger.schedule:定时调度。
  • trigger.manual:手动触发。
  • paused:是否暂停。
  • standbyModifier.scaleToZero:是否将工作负载副本数设为 0。
  • excludeResources:排除资源列表。

两阶段恢复

资源恢复通常分为两个阶段:

  1. cluster phase:恢复集群级资源。
  2. namespace phase:恢复命名空间级资源。

两阶段设计可以避免集群级资源和命名空间资源在权限、依赖、已存在资源策略上互相干扰。

Standby Modifier

Standby Modifier 会把目标端工作负载保持在不对外提供服务的状态。默认思路:

  • 在注解中记录原始副本数,例如 testudo.softcdata.com/original-replica-count
  • deployments.appsstatefulsets.apps 等资源的 /spec/replicas 设置为 0。
  • 故障切换时再按记录的副本数拉起目标端。

观测字段

  • status.state
  • status.lastBackupName
  • status.lastClusterRestoreName
  • status.clusterRestoreStatus
  • status.lastNamespaceRestoreName
  • status.namespaceRestoreStatus
  • status.history
  • status.conditions