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 的典型工作流包含以下步骤:

  1. 备份触发:用户通过 velero backup create 命令或 Schedule CRD 触发备份。
  2. 资源收集:Velero 根据备份范围(命名空间、标签选择器、资源类型)收集 Kubernetes 资源对象。
  3. 数据卷处理:对于包含 PV 的 Pod,Velero 调用存储快照插件或 Restic/Kopia 进行数据卷备份。
  4. 上传存储:备份数据(资源清单 + 卷快照/文件)上传到配置的对象存储后端。
  5. 恢复执行:恢复时,Velero 从存储拉取备份,重建资源对象并恢复数据卷。
实践提示: 在镜像拉取加速场景中,Velero 的插件接口允许在恢复过程中拦截镜像拉取操作,将镜像源替换为本地仓库或加速器,从而大幅缩短恢复时间。这正是本课程《Velero镜像拉取加速插件接口调用与验证实践》的核心技术点。

下图展示了 Velero 在 Kubernetes 集群中的整体架构与备份恢复流程:

Velero 在 Kubernetes 备份恢复中的角色架构 Kubernetes 集群 Velero Server Velero CLI CRD 控制器 插件接口 镜像加速插件 存储快照插件 应用 Pod PV 数据卷 资源清单 对象存储 S3 / MinIO / Azure Blob 备份数据持久化 上传备份 恢复目标集群 同集群 / 跨集群 资源 + 数据恢复 拉取恢复 Velero 备份恢复流程 ① 备份触发 → ② 资源收集 → ③ 数据卷处理 ④ 上传对象存储 → ⑤ 恢复执行(含镜像加速) 插件接口在步骤③和⑤中扩展自定义逻辑

1.4 Velero 备份恢复的典型工作流

为了更清晰地展示 Velero 在备份恢复中的操作流程,下图以时序方式呈现了从备份触发到恢复完成的完整链路:

Velero 备份恢复典型工作流 备份触发 资源收集 数据卷处理 上传存储 恢复执行 插件接口介入点 数据卷处理阶段:存储快照插件 / 文件系统备份插件 | 恢复执行阶段:镜像拉取加速插件 恢复执行阶段(镜像拉取加速场景) 拉取备份清单 重建资源对象 镜像拉取加速 恢复数据卷 完成

1.5 为什么需要镜像拉取加速插件

在生产环境中,Kubernetes 集群恢复时最大的瓶颈之一就是 镜像拉取时间。当集群需要从备份恢复大量 Pod 时,每个 Pod 都需要从镜像仓库拉取对应的容器镜像。如果镜像仓库位于公网或跨地域,拉取速度可能非常慢,导致恢复时间(RTO)远超预期。

典型痛点: 一个包含 50 个微服务的应用集群,每个服务镜像大小约 500MB,如果镜像拉取速度仅为 5MB/s,仅镜像拉取阶段就需要约 5000 秒(约 1.4 小时),这还不包括数据卷恢复时间。镜像拉取加速插件通过拦截恢复过程中的镜像拉取请求,将镜像源切换为本地仓库、P2P 网络或镜像加速器,可将拉取时间缩短 80% 以上。