首页/云/Kubernetes 速查/Velero 备份与恢复思路
集群运维与排障54 条

Velero 备份与恢复思路

集群级备份常见方案是 Velero:备份 API 对象,配合快照或文件级备份处理 PV,恢复时可整命名空间或按资源筛选。

Kubernetes 速查云更新于 2026-10-13

Velero 是什么

Velero 是 Kubernetes 上最常用的集群级备份与恢复工具:它以 CRD 描述备份、恢复与计划任务,把 API 对象导出到对象存储,持久卷数据则通过快照或文件级备份两条路处理。服务端由 velero 命名空间的 Deployment 与负责卷读写的 node-agent(DaemonSet)组成,操作通过 velero CLI 或直接创建 CR 对象完成。它备份的是集群里的资源与卷数据,集群外的数据库、消息队列和业务对象存储不在范围内。

基本信息

部署形态服务端 Deployment 加 node-agent DaemonSet,通常装在 velero 命名空间
备份内容Kubernetes API 对象,外加 PV 数据的快照或文件级备份
备份去向对象存储(S3 / MinIO / GCS / Azure Blob 等),由 BackupStorageLocation 定义
关键 CRDBackup、Restore、Schedule、BackupStorageLocation、VolumeSnapshotLocation
默认保留期不指定 --ttl 时备份默认保留 30 天(720 小时)
覆盖边界不含 etcd 本体、节点系统与集群外部系统的数据

典型使用场景

  • 误删兜底:误删命名空间、ConfigMap 或自定义资源后按时间点恢复回来
  • 集群迁移:把一整套命名空间搬到新集群,配合存储类与镜像仓库的映射调整
  • 升级前留底:变更 CRD、Ingress 控制器或集群版本前先备一份可回滚的对象快照
  • 定期合规备份:用 Schedule 每天备份关键命名空间,按 TTL 自动清理旧备份
  • 恢复演练:把备份恢复到隔离命名空间,验证流程、权限与耗时

备份与恢复常用命令

备份与恢复常用命令
velero backup-location get        # 前提检查:备份存储位置必须是 Available
velero snapshot-location get      # 走卷快照时,快照位置也要就绪
velero backup create prod-1013 --include-namespaces prod \
  --snapshot-volumes=true --default-volumes-to-fs-backup=true --ttl 720h   # 两条路至少保证一条,别依赖默认值
velero backup get
velero backup describe prod-1013 --details    # 看 Errors / Warnings 与 PV 处理结果
velero backup logs prod-1013 | tail -20       # 失败原因在日志里最直接
velero restore create --from-backup prod-1013 --include-namespaces prod \
  --namespace-mappings prod:prod-restore      # 先恢复到隔离命名空间做验证
velero restore describe <restore 名> --details
velero schedule create daily --schedule="0 2 * * *" --include-namespaces prod --ttl 168h

三种备份方式对照

方式备份了什么恢复时的行为
API 对象备份资源的清单内容,含 Secret、ConfigMap、CRD 等重新创建对象,ClusterIP、令牌等会随重建变化
卷快照持久卷的数据快照,依赖云厂商快照或 CSI 快照能力从快照创建新卷并绑定到恢复出的 PVC
文件级备份由 node-agent 读取卷内文件,较新版本默认使用 Kopia把文件写回新卷,可跨存储类型恢复,但速度较慢
恢复前先确认目标集群的差异:存储类名称与参数、CSI 驱动是否存在、镜像仓库是否可达、CRD 版本是否匹配。目标已有同名对象时,是否覆盖由 --existing-resource-policy 控制(none 与 update 两个取值),需要覆盖成备份里的版本就显式写 update,否则可能只是保留现状而误判为恢复成功。
判断一次备份是否真的可用,看三个地方:backup-location 的状态是否 Available、backup describe 里的 Errors 与 Warnings、以及备份是否停在 InProgress 或 PartiallyFailed。备份成功不等于恢复成功,定期把备份恢复到隔离命名空间才能验证整条链路。
备份仓库里存着整个集群的 Secret,是最高价值的攻击目标之一。给存储桶单独的访问凭证与最小权限,开启版本控制与删除保护,不要把集群管理员的云凭证直接交给 Velero。

易错点

  • 只备 API 对象不备卷数据(没配快照位置也没开文件级备份):恢复后 PVC 是空卷,业务起不来,而且备份报告里看不出异常
  • 把 Velero 当成全量灾备:集群外的数据库、消息队列、业务对象存储不在其范围内,需要各自独立的备份与恢复方案
  • 从不做恢复演练:存储类名称、CSI 驱动、镜像仓库可达性这些差异只在真实故障时暴露,恢复耗时无法预估
  • 保留策略要么过短要么过长:不指定 ttl 时默认保留 30 天,Schedule 里设置不当会造成存储成本上升或问题备份过早消失
  • 备份仓库权限给得过宽:一次凭证泄露就可能连带删掉全部备份,删除权限与备份权限应当分开管理

数据来源与参考

  • Velero 官方文档 · 备份与恢复流程
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌