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 定义 |
| 关键 CRD | Backup、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。