核心概念
界面术语与 Velero 底层对象的对应关系,读懂这一章就能把界面和 kubectl 对上。
还原点与备份
「还原点」是界面用语,对应 Velero 的 Backup 对象。同一个东西的两个视角:备份强调动作,还原点强调可恢复的时间点。
kubectl -n supkube get backups
本地与云端
一条打开导出的策略,每次运行会产生两个还原点:
| 界面标签 | 数据在哪 | 用途 |
|---|---|---|
| 本地 | 集群存储层的 CSI 快照 | 快速回滚 |
| 云端 | 对象存储中的导出数据 | 异地恢复与跨集群恢复 |
另有两种标签:「已导入」表示从其他集群通过共享存储位置同步而来,「仅元数据」表示只备份了资源清单、没有卷数据。
策略
「策略」对应一个或两个 Velero Schedule。打开导出开关时是两个:一个负责本地侧,一个负责云端侧,各自独立配置调度与保留期。
kubectl -n supkube get schedules
存储位置与快照位置
| 界面用语 | Velero 对象 | 作用 |
|---|---|---|
| 存储位置 | BackupStorageLocation | 备份数据写到哪个对象存储 |
| 快照位置 | VolumeSnapshotLocation | 卷快照怎么拍 |
数据路径
决定卷数据如何被抓取,共四种:CSI 快照、Data Mover、文件系统、仅元数据。详见 Velero 与数据路径。
变换规则与变换集
| 概念 | 定位 |
|---|---|
| 变换规则 | 原子的 Velero 资源修改器规则包,描述「把哪个字段改成什么」 |
| 变换集 | 变换规则的容器,并为规则里的变量占位符提供默认值 |
恢复时选择的是变换集,不是单条变换规则。冲突预检的「一键修复」生成的是一条变换规则,需要先加入某个变换集才会生效。
冲突预检
恢复前对目标集群做的静态扫描,识别十类冲突:
| 冲突类型 | 含义 |
|---|---|
| NodePort 已被占用 | 目标集群已有服务占用该端口 |
| clusterIP 已被占用 | 集群内地址冲突 |
| LoadBalancer IP 已被占用 | 负载均衡地址冲突 |
| Ingress host 已被使用 | 主机名冲突 |
| PVC 绑定了固定卷 | 目标集群无法复现该绑定 |
| 目标集群缺少 StorageClass | 存储类名不存在 |
| 镜像 registry 不可达 | 目标集群拉不到镜像 |
| ServiceAccount 缺失 | 依赖的服务账号不存在 |
| NodeSelector 标签缺失 | 没有满足调度约束的节点 |
| PriorityClass 缺失 | 优先级类不存在 |
结论分阻断与警告两级:阻断必须解决,警告可以逐条确认后忽略。
备份就绪性检查
策略保存前的静态检查,关注的是「这条策略跑起来能不能产出可用的备份」,与恢复前的冲突预检是两件事。
指纹
跨集群导入时用于确认还原点来源的 HMAC 签名。校验模式分强制、仅警告、关闭三种。
3-2-1-1-0
数据保护的行业原则,也是 SupKube 评分体系的判据:
| 判据 | 含义 |
|---|---|
| 3 份副本 | 数据至少存在三份 |
| 2 种介质 | 至少跨两种存储介质 |
| 1 份异地 | 至少一份在异地 |
| 1 份不可变 | 至少一份受对象锁保护 |
| 0 错误 | 恢复演练零失败 |
保护层级
灾备拓扑视图里的分层标注:
| 层级 | 含义 |
|---|---|
| L1 | 本地快照,数据不离开集群 |
| L2 | 本地存储位置,集群内 MinIO 或 NFS |
| L3 | 云端存储位置,对象存储 |
| L4 | 跨云复制,第二朵云的副本 |
| L5 | 恢复演练,周期性沙箱还原验证 |
一致性
崩溃一致(Crash-consistent)是磁盘层面的瞬时镜像,应用一致(Application-consistent)要求应用在备份瞬间处于静默状态。
Velero 的快照与文件级读取默认只能提供崩溃一致。运行中的数据库必须自行配置备份前后 hook 才能达到应用一致。
验证方法
kubectl -n supkube get backups -o custom-columns=NAME:.metadata.name,PHASE:.status.phase
kubectl -n supkube get schedules -o custom-columns=NAME:.metadata.name,CRON:.spec.schedule
kubectl -n supkube get backupstoragelocations
界面上看到的每个还原点、每条策略、每个存储位置,都应当能在上述命令的输出里找到对应项。