1. Velero 概述:Velero 是什么、核心功能与在 Kubernetes 备份恢复中的角色
1.1 Velero 是什么
Velero(原 Heptio Ark)是一个开源的 Kubernetes 集群备份与迁移工具,由 VMware 维护并捐赠给 CNCF 沙箱项目。它允许用户以声明式方式对 Kubernetes 集群中的资源对象(Pod、Deployment、Service、ConfigMap 等)以及持久卷(PersistentVolume)中的数据进行备份、恢复和迁移。
Velero 运行在 Kubernetes 集群内部,通过自定义资源定义(CRD)扩展 Kubernetes API,将备份/恢复操作抽象为标准的 Kubernetes 资源对象,从而与原生生态无缝集成。
关键特性: Velero 不依赖特定云厂商,支持 AWS、Azure、GCP、阿里云、腾讯云、MinIO 等多种对象存储后端,同时提供灵活的插件机制扩展备份/恢复能力。
1.2 Velero 核心功能
下表列出了 Velero 的主要功能模块及其说明:
| 功能模块 | 说明 | 典型场景 |
|---|---|---|
| 集群资源备份 | 备份 Kubernetes 资源对象的 YAML 定义(不含数据卷) | 快速恢复集群配置、跨集群迁移 |
| 持久卷数据备份 | 通过快照或文件系统级备份(Restic/Kopia)备份 PV 数据 | 数据库、有状态应用的数据保护 |
| 定时备份(Schedule) | 基于 Cron 表达式自动执行备份任务 | 生产环境定期备份策略 |
| 备份恢复(Restore) | 从备份中恢复资源对象和数据卷到指定集群或命名空间 | 故障恢复、环境回滚 |
| 集群迁移 | 将备份恢复到不同集群,支持命名空间映射、资源过滤 | 集群升级、跨云迁移、多集群灾备 |
| 插件扩展 | 通过 Velero 插件接口自定义备份/恢复行为 | 镜像拉取加速、自定义数据转换、第三方存储集成 |
1.3 Velero 在 Kubernetes 备份恢复中的角色
在 Kubernetes 生态中,Velero 承担着 数据保护与灾难恢复 的核心角色。它填补了 Kubernetes 原生缺乏持久化备份机制的空白,为有状态和无状态应用提供统一的备份恢复方案。
Velero 的典型工作流包含以下步骤:
- 备份触发:用户通过
velero backup create命令或 Schedule CRD 触发备份。 - 资源收集:Velero 根据备份范围(命名空间、标签选择器、资源类型)收集 Kubernetes 资源对象。
- 数据卷处理:对于包含 PV 的 Pod,Velero 调用存储快照插件或 Restic/Kopia 进行数据卷备份。
- 上传存储:备份数据(资源清单 + 卷快照/文件)上传到配置的对象存储后端。
- 恢复执行:恢复时,Velero 从存储拉取备份,重建资源对象并恢复数据卷。
实践提示: 在镜像拉取加速场景中,Velero 的插件接口允许在恢复过程中拦截镜像拉取操作,将镜像源替换为本地仓库或加速器,从而大幅缩短恢复时间。这正是本课程《Velero镜像拉取加速插件接口调用与验证实践》的核心技术点。
下图展示了 Velero 在 Kubernetes 集群中的整体架构与备份恢复流程:
1.4 Velero 备份恢复的典型工作流
为了更清晰地展示 Velero 在备份恢复中的操作流程,下图以时序方式呈现了从备份触发到恢复完成的完整链路:
1.5 为什么需要镜像拉取加速插件
在生产环境中,Kubernetes 集群恢复时最大的瓶颈之一就是 镜像拉取时间。当集群需要从备份恢复大量 Pod 时,每个 Pod 都需要从镜像仓库拉取对应的容器镜像。如果镜像仓库位于公网或跨地域,拉取速度可能非常慢,导致恢复时间(RTO)远超预期。
典型痛点: 一个包含 50 个微服务的应用集群,每个服务镜像大小约 500MB,如果镜像拉取速度仅为 5MB/s,仅镜像拉取阶段就需要约 5000 秒(约 1.4 小时),这还不包括数据卷恢复时间。镜像拉取加速插件通过拦截恢复过程中的镜像拉取请求,将镜像源切换为本地仓库、P2P 网络或镜像加速器,可将拉取时间缩短 80% 以上。