跳到主要内容

处理恢复冲突、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

处理完目标环境问题后,可以对恢复任务执行重试。