2. Velero 架构总览:核心组件、数据流与插件机制
Velero 是云原生环境下最主流的开源灾备工具,其架构设计围绕“无侵入、可扩展、声明式”三大原则展开。理解 Velero 的核心组件、数据流与插件机制,是后续构建灾备准入策略与审计日志体系的基础。
2.1 核心组件:Server、CLI 与 Restic
Velero 由三个主要组件构成,各自承担不同的职责:
| 组件 | 部署位置 | 核心职责 | 关键说明 |
|---|---|---|---|
| Velero Server | Kubernetes 集群内(Deployment) | 编排备份/恢复任务、管理调度、维护备份对象元数据 | 通过 CRD(Backup、Restore、Schedule)与 API Server 交互 |
| Velero CLI | 运维人员本地或 CI/CD 环境 | 触发备份/恢复命令、查看状态、管理插件 | 通过 kubeconfig 与集群内 Velero Server 通信 |
| Restic Daemon | Kubernetes 集群内(DaemonSet) | 执行文件系统级别的卷备份(Volume Backup) | 支持持久卷(PVC)的快照替代方案,适用于非云存储环境 |
架构要点: Velero Server 是控制中枢,CLI 是操作入口,Restic 是数据搬运工。三者通过 Kubernetes API 和 gRPC 协议协同工作。
2.2 Velero 组件交互架构图
下图展示了 Velero 三大核心组件与 Kubernetes 集群、存储后端的交互关系:
2.3 数据流与备份恢复流程
Velero 的备份与恢复流程遵循“先元数据、后数据”的原则,确保一致性。以下是标准备份流程的步骤分解:
- 触发备份请求: 用户通过 CLI 或 Schedule CRD 发起 Backup 请求,Velero Server 创建 Backup CR 对象。
- 查询资源清单: Velero Server 根据备份范围(Namespace、Label Selector 等)查询 Kubernetes API,获取待备份的资源列表(Deployment、ConfigMap、PVC 等)。
- 备份元数据: 将资源清单序列化为 JSON 格式,上传至存储后端(如 S3)的
backups/<name>/resources.json路径。 - 备份卷数据: 对于 PVC,Velero 优先使用云存储快照(VolumeSnapshotter 插件);若不可用,则调用 Restic Daemon 执行文件级备份。
- 记录备份状态: 更新 Backup CR 状态为
Completed,并记录备份日志与校验和。
关键数据流: 元数据与卷数据分离存储。元数据用于恢复时重建资源定义,卷数据用于恢复实际文件内容。这种设计使得恢复时可以先重建空 PVC,再填充数据,避免资源冲突。
2.4 备份与恢复流程对比
| 阶段 | 备份流程 | 恢复流程 |
|---|---|---|
| 触发 | Backup CR 创建 | Restore CR 创建 |
| 元数据处理 | 查询 API → 序列化 → 上传存储 | 从存储下载 → 反序列化 → 创建资源 |
| 卷数据处理 | 快照或 Restic 文件级备份 | 从快照恢复或 Restic 文件级恢复 |
| 冲突处理 | 无冲突(只读操作) | 支持跳过、重命名、覆盖等策略 |
| 状态记录 | Backup CR → Completed | Restore CR → Completed |
2.5 插件机制:扩展 Velero 的边界
Velero 的插件机制是其可扩展性的核心。插件以 gRPC 服务的形式运行,Velero Server 在备份/恢复过程中动态调用。插件分为三大类:
- Volume Snapshotter(卷快照插件): 对接云存储快照 API(如 AWS EBS、Azure Disk、GCE PD),实现高效卷备份。
- Object Store(对象存储插件): 对接不同存储后端(AWS S3、Azure Blob、GCS、MinIO 等),负责元数据与卷数据的读写。
- Backup Item Action / Restore Item Action(资源操作插件): 在备份/恢复过程中对特定资源执行自定义操作(如加密、脱敏、转换)。
安全提示: 插件运行在 Velero Server Pod 内,拥有与 Server 相同的权限。在生产环境中,必须对插件的来源进行校验,避免加载恶意插件导致数据泄露或集群破坏。
2.6 插件调用流程示意图
下图展示了 Velero 在备份过程中如何调用不同类型的插件:
2.7 插件机制的关键设计原则
- 解耦存储后端: 通过 Object Store 插件,Velero 可以无缝切换存储后端,无需修改核心代码。
- 资源级扩展: Backup/Restore Item Action 插件允许对特定资源(如 Cert-Manager 证书、Istio 配置)执行自定义逻辑,满足复杂业务场景。
- 版本兼容: 插件与 Velero Server 通过 gRPC 协议通信,插件接口版本独立,支持向后兼容。
最佳实践: 在灾备准入策略评审中,应重点检查插件列表是否经过安全审批,以及插件是否具备审计日志输出能力。自定义插件必须通过代码审查与安全扫描。