跳到主要内容

Velero 与数据路径

SupKube 的数据面由 Velero 承担,四种数据路径决定卷数据怎么被抓取、能不能跨集群恢复。

前置条件​

  • 已完成安装,参见 在线安装。
  • 了解集群里各 StorageClass 的快照能力。

捆绑还是自带 Velero​

Chart 默认捆绑 Velero 一起安装,目的是让首次安装一条命令完成。

场景配置
全新集群velero.enabled=true,Velero 落在 Release 命名空间
已有手工安装的 Velerovelero.enabled=false 加 config.veleroNamespace=velero
备注

捆绑模式下 Velero 与 SupKube 在同一个命名空间(默认 supkube),因为 Velero 子 Chart 会忽略命名空间覆盖参数。config.veleroNamespace 留空时后端会自动解析到正确位置,不要凭习惯填 velero。

四种数据路径​

数据路径卷数据去向能否跨集群恢复依赖
CSI 快照留在集群存储层,写时复制否,除非快照本身能被目标集群访问CSI 驱动支持快照
Data MoverCSI 快照经 Kopia 搬到对象存储是node-agent 与 CSI 快照能力
文件系统Restic 或 Kopia 直接读取卷文件是node-agent
仅元数据只备份资源清单,不动卷数据是无

选择建议:

  • 追求恢复速度、只做集群内回滚,用 CSI 快照。
  • 需要异地或跨集群恢复,且存储支持快照,用 Data Mover。
  • 存储不支持 CSI 快照,用 文件系统。
  • 应用的数据可以自行重建(例如纯缓存),用 仅元数据。

node-agent 是硬前置​

Data Mover 与文件系统两条路径都依赖 node-agent DaemonSet。Chart 默认 velero.deployNodeAgent=true。

kubectl -n supkube get daemonset velero-node-agent
kubectl -n supkube get pods -l name=node-agent -o wide

每个可调度节点上都应当有一个 Ready 的 node-agent。

一致性:最需要理解的一点​

Velero 的快照与文件级读取拿到的都是崩溃一致(Crash-consistent)的磁盘镜像,不是应用一致(Application-consistent)的。

运行中的数据库正在做压实与写入,数据文件、元数据、事务日志在磁盘上本身就不同步。字节还原得回来不等于数据库起得来。

危险

为运行中的数据库配置 Velero 的备份前后 hook,在备份瞬间让数据库静默。SupKube 的备份就绪性检查会提示这个风险,但绝不会替您修改工作负载。

关键 Velero 参数​

参数默认值说明
velero.configuration.featuresEnableCSI打开 CSI 能力,关闭后 CSI 快照不可用
velero.configuration.backupSyncPeriod60s从对象存储同步备份元数据的周期
velero.configuration.fsBackupTimeout4h文件系统备份的超时时间,大卷需要上调
velero.deployNodeAgenttrue是否部署 node-agent
velero.snapshotsEnabledtrue是否启用卷快照
velero.installCRDstrue是否安装 Velero 的自定义资源定义

Chart 默认加载两个插件:velero-plugin-for-aws:v1.14.1 与 velero-plugin-for-microsoft-azure:v1.14.1。

CSI 兼容性检查​

策略编辑页会对所选命名空间做 CSI 兼容性检查,列出不支持快照的 PVC。出现阻断时,要么把数据路径切到文件系统,要么把这些 PVC 迁移到支持快照的 StorageClass。

kubectl get volumesnapshotclasses
kubectl get pvc -n my-app
kubectl get storageclass

验证方法​

kubectl -n supkube get pods -l component=velero
kubectl -n supkube get backupstoragelocations
kubectl -n supkube exec deploy/supkube-backend -- \
wget -qO- http://127.0.0.1:8080/api/v1/velero-health

自检接口返回的阻断项为空即数据面健康。界面上的等价判据是「系统概览」页顶部没有 Velero 相关的红色或黄色横幅。

相关文档​