处理恢复冲突、PV 和集群级资源
恢复失败常见原因不是备份损坏,而是目标集群环境与备份内容不一致。恢复前应明确冲突处理策略。
既有资源策略
恢复到已有命名空间时,需要设置 existingResourcePolicy。常见选择:
| 策略 | 使用场景 |
|---|---|
| 跳过 | 只补齐缺失资源,避免覆盖目标现状 |
| 更新 | 目标资源允许被备份内容修正 |
| 替换 | 灾难恢复窗口内按备份强制恢复 |
生产环境不建议默认替换,应先做 dry-run 或演练验证。
PV 和 PVC
恢复 PV 时确认:
- 目标集群有兼容 StorageClass。
- CSI 驱动支持恢复出来的数据卷类型。
- PVC 容量、访问模式和绑定模式可满足应用。
- 恢复后 Pod 不会同时挂载源和目标数据卷。
如果只恢复资源骨架,不恢复 PV,应用可能启动但数据为空。
集群级资源
includeClusterResources 会影响 CRD、ClusterRole、StorageClass、IngressClass 等资源。跨集群恢复时要谨慎:
- CRD 通常应由平台或应用安装流程提前准备。
- ClusterRole 可能与目标集群安全基线冲突。
- StorageClass 一般不建议从源集群直接覆盖目标集群。
- Namespace 级资源优先于集群级资源。
控制台入口
创建恢复时,在基础配置中设置资源冲突策略,在高级选项中配置 PV、NodePort、集群级资源和跨集群恢复。


| 控制台选项 | 影响 |
|---|---|
| 资源冲突策略 | 决定目标集群已有同名资源时跳过还是更新。 |
| 恢复卷数据 | 决定是否恢复 PV/PVC 数据内容。未开启时可能只恢复资源声明,应用数据为空。 |
| 保留 NodePort | 决定 Service 是否沿用源集群 NodePort。目标端口已占用时会导致冲突。 |
| 包含集群资源 | 决定是否恢复 CRD、ClusterRole、StorageClass、IngressClass 等集群级资源。 |
| 写入稀疏文件 | 影响文件系统级数据恢复的写入方式,需要目标存储兼容。 |
| 并发下载线程数 | 影响文件系统级数据恢复吞吐,0 表示自动。 |
失败时处理
kubectl --context prod-b -n velero describe restore <restore-name>
kubectl --context prod-b -n velero get podvolumerestore
kubectl --context prod-b -n demo-bookinfo-restore get events --sort-by=.lastTimestamp
处理完目标环境问题后,可以对恢复任务执行重试。