ResourceSync

可编辑图源:resource-sync-flow.excalidraw
ResourceSync 负责同步 Kubernetes 资源,并把目标端资源恢复为 standby 形态。
输入
ResourceSync.spec 包含:
instance:父级实例名称。trigger.schedule:定时调度。trigger.manual:手动触发。paused:是否暂停。standbyModifier.scaleToZero:是否将工作负载副本数设为 0。excludeResources:排除资源列表。
两阶段恢复
资源恢复通常分为两个阶段:
clusterphase:恢复集群级资源。namespacephase:恢复命名空间级资源。
两阶段设计可以避免集群级资源和命名空间资源在权限、依赖、已存在资源策略上互相干扰。
Standby Modifier
Standby Modifier 会把目标端工作负载保持在不对外提供服务的状态。默认思路:
- 在注解中记录原始副本数,例如
testudo.softcdata.com/original-replica-count。 - 将
deployments.apps、statefulsets.apps等资源的/spec/replicas设置为 0。 - 故障切换时再按记录的副本数拉起目标端。
观测字段
status.statestatus.lastBackupNamestatus.lastClusterRestoreNamestatus.clusterRestoreStatusstatus.lastNamespaceRestoreNamestatus.namespaceRestoreStatusstatus.historystatus.conditions