2. Velero 核心概念:备份、恢复、调度、存储位置与卷快照
在深入蓝绿发布与漂移告警复测流程之前,必须牢固掌握 Velero 的五大核心概念。这些概念构成了所有运维操作的基础,理解它们之间的协作关系,是正确设计备份策略和快速定位恢复故障的前提。
2.1 五大核心概念总览
下表从定义、用途和关键属性三个维度,对五大概念进行横向对比,帮助你快速建立全局认知。
| 概念 | 定义 | 核心用途 | 关键属性 / 关联对象 |
|---|---|---|---|
| Backup | 对 Kubernetes 资源对象和持久化卷数据的完整或增量快照。 | 数据保全、灾难恢复、环境克隆。 | TTL(过期时间)、Included/Excluded Namespaces、存储位置引用。 |
| Restore | 从指定的 Backup 对象中,将资源对象和数据恢复到目标集群。 | 故障恢复、版本回退、数据迁移。 | Restore 模式(包括/排除资源)、Namespace 映射、PV 恢复策略。 |
| Schedule | 基于 Cron 表达式自动触发 Backup 创建的定时任务。 | 自动化备份、合规性要求、定期快照。 | Cron 语法、备份模板(Template)、暂停/启用状态。 |
| StorageLocation | 定义备份数据(对象存储)的存储后端配置。 | 数据持久化、多云/混合云存储、备份数据生命周期管理。 | Provider(如 AWS S3、GCS、Azure Blob)、Bucket、Prefix、访问凭证。 |
| VolumeSnapshot | 对 PV(PersistentVolume)底层存储卷的瞬时快照。 | 数据库等有状态应用的高效、一致性备份。 | CSI Driver 支持、SnapshotClass、VolumeSnapshotLocation。 |
2.2 核心概念关系与数据流
下图展示了 Velero 在执行一次备份操作时,各核心组件之间的协作关系与数据流向。理解这张图,就掌握了 Velero 的运行原理。
2.3 核心概念深度解析
2.3.1 Backup(备份)
Backup 是 Velero 中最核心的操作单元。它包含两个部分:Kubernetes 资源对象的 YAML 清单和持久化卷的数据快照。备份操作是异步的,Velero 会创建一个 Backup CRD 对象,控制器会持续更新其状态。
--ttl 72h 的备份。这样,如果“绿环境”出现漂移告警,你可以在 72 小时内快速回退到“蓝环境”的稳定状态。
# 创建一个包含指定命名空间和卷快照的备份示例
velero backup create blue-env-backup \
--include-namespaces production-blue \
--snapshot-volumes \
--ttl 72h \
--storage-location default
2.3.2 Restore(恢复)
Restore 是从已有的 Backup 中提取数据并重建资源的过程。恢复操作支持灵活的命名空间映射和资源过滤,这在跨环境迁移或蓝绿切换时非常有用。
- 命名空间映射: 将备份中的
production-blue命名空间恢复到production-green。 - 资源过滤: 可以选择只恢复 Deployment 和 Service,而跳过 ConfigMap。
- 恢复模式: 支持
--restore-volumes和--namespace-mappings等精细控制。
# 将 blue-env-backup 恢复到 green 命名空间,并保留原始 PV 数据
velero restore create --from-backup blue-env-backup \
--namespace-mappings production-blue:production-green \
--restore-volumes=true
2.3.3 Schedule(调度)
Schedule 是 Velero 实现自动化运维的关键。它使用标准的 Cron 表达式来定义备份执行周期。在蓝绿发布流程中,建议为每个环境配置独立的 Schedule。
| Cron 表达式 | 含义 | 适用场景 |
|---|---|---|
0 */6 * * * |
每 6 小时执行一次 | 核心业务系统,数据变更频繁 |
0 2 * * * |
每天凌晨 2 点执行 | 常规业务,日终备份 |
0 0 * * 0 |
每周日凌晨执行 | 低频变更系统,周备份 |
# 创建一个每天凌晨 2 点执行的定时备份
velero schedule create daily-blue-backup \
--schedule="0 2 * * *" \
--include-namespaces production-blue \
--ttl 168h
2.3.4 StorageLocation(存储位置)
StorageLocation 定义了备份数据(资源清单和卷快照元数据)的物理存储后端。它通常指向一个对象存储服务(如 AWS S3、MinIO、GCS)。Velero 支持同时配置多个 StorageLocation,实现数据分级或异地容灾。
Bucket 和 Prefix 配置正确,并且 Velero 服务账号拥有对该 Bucket 的读写权限。错误的存储配置是导致备份失败的最常见原因。
# 查看当前集群中配置的存储位置
velero storage-location get
# 输出示例
NAME PROVIDER BUCKET/PREFIX ACCESS MODE
default aws my-velero-backups/blue-env ReadWrite
2.3.5 VolumeSnapshot(卷快照)
VolumeSnapshot 是 Velero 实现有状态应用一致性备份的核心。它利用 Kubernetes CSI(Container Storage Interface)快照功能,对 PV 进行瞬时快照。与直接复制文件系统相比,卷快照具有速度快、对应用影响小的优势。
- CSI 驱动依赖: 底层存储必须提供 CSI 快照能力(如 AWS EBS、GCE PD、Ceph RBD)。
- VolumeSnapshotClass: 需要预先定义,用于指定快照的属性和保留策略。
- 一致性组: 对于多卷应用(如数据库),需要确保所有卷的快照在时间上一致。
# 查看集群中可用的 VolumeSnapshotClass
kubectl get volumesnapshotclass
# 输出示例
NAME DRIVER DELETIONPOLICY AGE
csi-aws-vsc ebs.csi.aws.com Delete 30d
csi-gce-vsc pd.csi.storage.gke.io Retain 15d
2.4 概念关联与运维决策树
在蓝绿发布漂移告警复测中,你需要根据告警类型和影响范围,快速选择正确的 Velero 概念组合来执行恢复。下面的决策树可以帮助你理清思路。
velero backup describe 确认备份的完整性,再执行恢复。如果恢复后告警依然存在,应优先检查 StorageLocation 的连通性和 VolumeSnapshotClass 的配置是否正确。