跳到主要内容

创建应用恢复:从指定备份恢复到目标集群

AppRestore 用于把某个备份恢复到目标集群。它封装 Velero Restore,并提供命名空间映射、PV 恢复、资源冲突策略、StorageClass 映射和 modifier 能力。

控制台步骤

进入 备份恢复 / 应用恢复

应用恢复列表

点击 创建恢复 后,先选择备份源。备份源列表会展示 AppBackup,展开后再选择某一次已完成的备份历史。只有状态为已完成的历史记录适合作为恢复来源。

选择应用恢复的备份源

选项说明建议
搜索备份名称AppBackup 名称过滤备份源。备份任务较多时先搜索业务或环境前缀。
备份源展示可恢复的 AppBackup 对象、所属集群、创建时间、命名空间数量和状态。优先选择状态正常、时间点明确的备份。
展开备份历史展开某个 AppBackup 下的执行历史。自动备份会有多条历史,必须确认选择的时间点。
备份历史记录具体的 Velero Backup 名称和执行时间。只选择 已完成 的记录;失败或等待中的记录不要用于恢复。
已选择当前将用于恢复的备份历史。保存前再次核对,避免从错误时间点恢复。

基础配置和命名空间控制

继续向下滚动,配置恢复名称、冲突策略、超时时间和命名空间控制。

配置应用恢复的基础信息和命名空间

选项说明建议
恢复名称平台 AppRestore 对象名称。使用业务、目标集群和时间语义,例如 bookinfo-dr-restore-20260521
资源冲突策略目标集群已有同名资源时的处理方式。当前控制台提供 跳过已存在的资源更新已存在的资源演练和测试恢复优先跳过;确认目标资源可被修正时再选择更新。
操作超时时间恢复任务等待完成的超时时间,可选 4、8、12 小时。PVC 较大、跨区域对象存储或目标集群资源紧张时选择更长时间。
描述信息记录恢复目的、变更窗口和审批信息。生产恢复必须写清楚恢复原因和目标环境。
包含命名空间只恢复指定命名空间。留空时按备份内容恢复。只恢复部分应用时填写;完整应用恢复通常留空或按备份源选择。
排除命名空间从恢复范围中排除指定命名空间。排除测试、临时或不应落到目标集群的 namespace。
命名空间映射将源命名空间恢复到目标命名空间。演练恢复建议映射到新命名空间,例如 demo-bookinfo -> demo-bookinfo-restore,避免覆盖原命名空间。

高级恢复选项

高级选项包含 PV、NodePort、跨集群恢复、资源类型过滤和性能配置。跨集群恢复需要选择目标集群,平台会在保存前进行 BSL 前置检查。

配置应用恢复的高级选项

选项说明建议
包含集群资源恢复 CRD、ClusterRole、StorageClass、IngressClass 等集群级资源。跨集群恢复时谨慎开启,目标集群已有全局资源时容易冲突。
恢复卷数据恢复 PV/PVC 对应的数据卷内容。需要恢复有状态应用数据时开启;目标集群必须具备兼容的 provisioner / StorageClass。
保留 NodePort恢复 Service 时保留源集群 NodePort 端口。只有目标集群端口未被占用且外部访问依赖固定端口时开启。
写入稀疏文件恢复文件系统级备份时按稀疏文件方式写入。大量稀疏文件或镜像类数据可考虑开启,开启前先在目标存储上验证兼容性。
跨集群恢复将备份恢复到不同目标集群。勾选后选择目标集群,并触发 BSL / 对象存储连通性检查。目标集群必须能访问源备份所在的同一份存储仓库。
包含资源类型只恢复指定 Kubernetes 资源类型。部分恢复时使用;完整恢复通常留空。
排除资源类型从恢复范围中排除指定资源类型。排除优先级高于包含,常用于跳过 events、可重建 Pod 等。
并发下载线程数文件系统级数据恢复的并发下载数,0 表示自动。默认保持 0;对象存储吞吐足够时再提高并发。

推荐恢复策略

测试恢复建议恢复到新命名空间:

源命名空间目标命名空间
demo-bookinfodemo-bookinfo-restore

生产恢复需要在变更窗口内明确:

  • 是否覆盖已有资源。
  • 是否恢复 PV。
  • 是否保留 NodePort。
  • 是否恢复 Ingress。
  • 是否需要 StorageClass 或 IngressClass 映射。

API 等价操作

POST /apis/apprestores.testudo.softcdata.com/v1/apprestores
POST /apis/apprestores.testudo.softcdata.com/v1/apprestores/preflight/validate
POST /apis/apprestores.testudo.softcdata.com/v1/apprestores/:name/actions/retry
POST /apis/apprestores.testudo.softcdata.com/v1/apprestores/:name/actions/cancel

验证

kubectl get apprestore <name> -o yaml
kubectl --context prod-b -n velero describe restore <restore-name>
kubectl --context prod-b -n demo-bookinfo-restore get all,pvc

如果恢复成功但应用不可用,继续检查镜像拉取、Secret、StorageClass、IngressClass、Service 类型和应用启动日志。