1. Velero概述
1.1 Velero 是什么
Velero(原 Heptio Ark)是一个开源的 Kubernetes 集群备份、恢复与迁移工具,由 VMware 维护并捐赠给 CNCF 成为沙箱项目。它允许用户以声明式方式对 Kubernetes 集群中的资源对象(Pod、Deployment、Service、ConfigMap 等)以及持久卷(PersistentVolume)中的数据进行安全备份,并在需要时快速恢复或迁移到其他集群。
Velero 的核心设计理念是“以 Kubernetes 的方式管理 Kubernetes”——它本身以 Deployment 形式运行在集群内,通过 CRD(Custom Resource Definition)定义备份/恢复/调度等操作,所有操作记录均以 Kubernetes 原生资源存储,天然适配 GitOps 与自动化运维流程。
关键特性:Velero 不依赖特定存储后端,支持 AWS S3、Azure Blob、GCP GCS、MinIO、Ceph RGW 等对象存储,也支持本地文件系统(通过 VolumeSnapshotLocation 扩展)。
1.2 Velero 的核心功能
Velero 提供三大核心功能:备份(Backup)、恢复(Restore) 和 迁移(Migration)。下表从操作对象、使用场景、关键参数三个维度进行对比:
| 功能 | 操作对象 | 典型场景 | 关键参数 |
|---|---|---|---|
| 备份 | Kubernetes 资源 + PV 数据快照 | 定期灾备、版本快照、变更前快照 | --include-namespaces、--exclude-resources、--ttl |
| 恢复 | 从备份存储中还原资源与数据 | 集群故障恢复、误删除恢复、回滚 | --namespace-mappings、--restore-volumes |
| 迁移 | 跨集群复制资源与数据 | 集群升级、环境迁移、多集群同步 | 结合 --include-namespaces + 目标集群 Restore |
备份(Backup)
- 资源备份:将指定命名空间或集群范围的 Kubernetes 资源(YAML 清单)上传至对象存储。
- 数据备份:通过 CSI 快照或内置 VolumeSnapshotter 接口,对 PersistentVolumeClaim 对应的存储卷创建快照。
- 调度备份:通过 Schedule CRD 实现 Cron 表达式定时备份,支持保留策略(TTL)。
恢复(Restore)
- 全量恢复:从备份中还原所有资源与数据,保持原始命名空间或映射到新命名空间。
- 选择性恢复:通过
--include-resources或--exclude-resources过滤恢复对象。 - 冲突处理:支持
--existing-resource-policy参数(none/update/delete)控制已有资源处理方式。
迁移(Migration)
- 跨集群迁移:在源集群执行备份,在目标集群执行恢复,实现集群间资源与数据的完整迁移。
- 存储类转换:恢复时可通过
--storage-class-mappings将源集群的 StorageClass 映射为目标集群的 StorageClass。 - 命名空间重映射:支持
--namespace-mappings将资源从一个命名空间迁移到另一个命名空间。
实战要点:迁移场景中,Velero 不负责网络层(如 Service 的 LoadBalancer IP)和 DNS 记录的迁移,这些需要结合外部工具或手动调整。
1.3 Velero 在 Kubernetes 灾备中的定位
在 Kubernetes 灾备体系中,Velero 主要承担应用层灾备与数据层灾备的衔接角色。它与基础设施层(存储、网络、计算)的灾备方案形成互补,而非替代。以下表格展示了 Velero 在灾备体系中的具体定位:
| 灾备层级 | 典型工具/方案 | Velero 的角色 |
|---|---|---|
| 基础设施层 | VMware HA、AWS AZ、GCP Region | 不涉及,依赖云平台或虚拟化层 |
| 存储层 | 存储阵列快照、Ceph RBD 镜像 | 通过 VolumeSnapshotLocation 调用存储快照 |
| Kubernetes 资源层 | etcd 备份、Velero | 备份/恢复所有 Kubernetes 资源对象 |
| 应用数据层 | Velero + CSI 快照、Velero + Restic | 备份/恢复 PVC 数据(文件级或块级) |
| 配置与策略层 | GitOps(ArgoCD/Flux)、Velero Schedule | 提供定时备份与保留策略,与 GitOps 互补 |
Velero 的灾备定位可以概括为以下三个关键点:
- 应用一致性备份:Velero 支持备份前/后 Hook(如冻结数据库、Flush 缓存),确保备份数据处于应用一致状态。
- 细粒度恢复:支持按命名空间、资源类型、标签选择器进行恢复,避免全量恢复带来的风险。
- 跨版本兼容:Velero 持续跟踪 Kubernetes API 版本变更,备份时记录资源 API 版本,恢复时自动适配目标集群的 API 版本。
注意:Velero 不备份 etcd 数据本身,也不备份节点级别的操作系统或 kubelet 配置。etcd 备份应使用 etcd 快照工具(如 etcdctl snapshot save)独立完成。
1.4 Velero 在存储变更与门禁权限审计中的价值
本课程《Velero Kubernetes 存储变更与门禁权限审计实战》将 Velero 作为核心工具,围绕以下三个维度展开:
- 存储变更审计:通过 Velero 的备份记录(Backup CR)和存储位置(BackupStorageLocation)变更日志,追踪 PV/PVC 的创建、删除、扩容、存储类切换等操作。
- 门禁权限控制:利用 Velero 的 RBAC 资源备份与恢复能力,验证 Kubernetes RBAC 规则变更前后的权限差异,辅助门禁策略的合规审计。
- 灾备合规验证:通过 Velero 的恢复演练,验证备份数据的完整性与可恢复性,满足金融、医疗等行业的灾备合规要求。
课程前置知识:建议学员具备 Kubernetes 基础操作能力(kubectl、YAML 编写)、了解对象存储基本概念、熟悉 Linux 命令行。本课程将提供完整的实验环境搭建指南。