创建应用恢复:从指定备份恢复到目标集群
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-bookinfo | demo-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 类型和应用启动日志。