跳到主要内容

命名空间、StorageClass 和 IngressClass 映射

恢复映射用于把源集群资源安全落到目标集群。跨集群恢复和演练恢复通常都需要映射。

命名空间映射

最常见的测试恢复方式是把源命名空间恢复到新命名空间:

namespaceMapping:
demo-bookinfo: demo-bookinfo-restore

这样可以避免覆盖源命名空间,也便于恢复后清理。

StorageClass 映射

源集群和目标集群的 StorageClass 名称经常不同。例如:

源集群目标集群
fast-ssdstandard
csi-rbd-sccsi-hostpath-sc

恢复前确认目标 StorageClass 支持所需访问模式和容量。

IngressClass 映射

如果源集群使用 nginx,目标集群使用 traefik,需要在恢复策略或 modifier 中调整 IngressClass。否则 Ingress 对象可能创建成功但没有控制器接管。

控制台配置

在应用恢复中,向下滚动到 命名空间控制 区域配置包含/排除命名空间和命名空间映射。

配置应用恢复的命名空间映射

选项说明建议
包含命名空间只恢复指定源命名空间。只恢复部分应用时填写;完整恢复通常留空。
排除命名空间从恢复范围中排除指定源命名空间。避免把临时、测试或不应恢复的 namespace 带到目标集群。
源命名空间需要映射的备份源 namespace。从备份内容中选择,不要手写不存在的命名空间。
目标命名空间恢复后落到目标集群的 namespace。演练恢复使用新命名空间,便于隔离和清理。
添加将当前源/目标命名空间保存为一条映射规则。填写后必须点击添加,否则保存时不会生效。

容灾实例中也可以配置恢复策略,让后续 DataSync、ResourceSync、Failover 和 Drill 复用。

创建容灾实例

验证

恢复完成后检查:

kubectl --context prod-b get ns demo-bookinfo-restore
kubectl --context prod-b -n demo-bookinfo-restore get pvc
kubectl --context prod-b -n demo-bookinfo-restore get ingress -o yaml

常见问题

  • 只映射命名空间,忘记目标集群没有同名 StorageClass。
  • Ingress 恢复成功但没有地址,实际是 IngressClass 不匹配。
  • Secret 或镜像拉取凭据没有恢复,Pod 无法启动。
  • 目标命名空间已存在旧资源,导致恢复冲突。