第一次恢复
把上一步产生的还原点恢复回集群,并理解恢复向导里最容易出错的两个选项。
前置条件
- 已经有一个处于
Completed状态的还原点,参见 保护第一个应用。 - 您的角色是 admin,或是目标命名空间范围内的 editor。
第一步:选择还原点
左侧菜单进入「应用还原」页,找到目标还原点,点行尾的操作菜单选择「恢复」,打开「从备份恢复」抽屉。
第二步:选择目标命名空间
抽屉的「目标应用 / 命名空间」区块有三种选择:
- 原始命名空间:恢复回
my-app自身。 - 已有的其他命名空间:恢复到一个已存在的命名空间。
- 新建命名空间:例如
my-app-restored,适合做演练,不影响生产。
danger
选择原始命名空间时,界面会要求勾选「我已了解 — 删除并重建该命名空间」。这是因为 Velero 默认跳过已存在的资源:不先清空,恢复会「成功」但什么都没变。勾选后 SupKube 会先删除该命名空间及其中全部资源再开始恢复。
第三步:处理冲突预检
抽屉下方的「冲突预检」会扫描目标集群,把结果分为阻断与警告两级:
- 阻断不可忽略,必须点「一键修复」生成变换规则,或点「去 Transform 解决」手工处理。
- 警告可以逐条勾选「忽略此 warning」后继续。
预检识别的冲突类型包括 NodePort 已被占用、clusterIP 已被占用、Ingress host 已被使用、目标集群缺少 StorageClass、镜像 registry 不可达等。
note
一键修复生成的是一条原子「变换规则」(Transform)。需要先把它加入某个「变换集」(Transform Set),再回到恢复抽屉选择该变换集,规则才会生效。
第四步:确认恢复选项
「可选恢复设置」里的「当目标资源已存在时」决定 Velero 的 existingResourcePolicy:
| 取值 | 行为 | 适用场景 |
|---|---|---|
| 跳过已存在资源 | 最安全,但目标命名空间已有同名对象时恢复等于空操作 | 恢复到全新命名空间 |
| 更新已存在资源 | 覆盖 ConfigMap、Secret 等可变对象;PVC 数据不会被更新 | 配置回滚 |
确认无误后提交。页面会给出持久提示并自动跳转到实时活动流。
验证方法
kubectl -n supkube get restores
kubectl -n my-app-restored get pods,pvc
恢复任务进入 Completed 后,目标命名空间里的工作负载应当逐步进入 Running。若结果是 PartiallyFailed,在还原点详情里查看错误列表定位失败对象。