velero 实现 kubernetes 备份恢复需三步:准备 s3 兼容对象存储(如 minio)、安装客户端与服务端、验证备份恢复流程;它按需备份资源清单和 pv 数据,支持命名空间粒度,不依赖 etcd 快照。

部署 Velero 实现 Kubernetes 集群数据备份恢复,核心在于三步:准备兼容的对象存储、安装 Velero 客户端与服务端、验证备份与恢复流程。它不依赖 etcd 全量快照,而是按需备份资源清单和持久卷数据,支持命名空间粒度操作,适合生产环境灾备与跨集群迁移。
准备 S3 兼容对象存储(如 MinIO)
Velero 必须对接对象存储来存储备份数据。MinIO 是最常用的自建方案,轻量且完全兼容 AWS S3 API。
- 用 Docker Compose 启动 MinIO,暴露 9000(S3 API)和 9001(Web 控制台)端口,挂载宿主机目录持久化数据
- 访问 http://:9001,用默认账号(
minioadmin/minioadmin123)登录,新建名为velero-backups的 Bucket - 创建凭证文件
credentials-velero,格式为 INI,含[default]节及aws_access_key_id和aws_secret_access_key字段,值与 MinIO 管理员一致
安装 Velero 客户端并部署服务端
客户端运行在管理机上,服务端以 Pod 形式部署在目标集群中。
评估 Kubernetes 集群安全态势,覆盖 RBAC、工作负载安全、网络策略、基础设施即代码(IaC)、运行时监控和密钥管理等 30 项控制项……
- 下载对应架构的二进制包(如
velero-v1.15.2-linux-amd64.tar.gz),解压后将velero拷贝至/usr/local/bin/并赋予执行权限 - 执行
velero install命令,关键参数包括:--provider aws(即使对接 MinIO 也用此 provider)、--bucket velero-backups、--secret-file ./credentials-velero、--use-volume-snapshots=false(禁用 CSI 快照,改用 Restic/Kopia 备份 PV)、--backup-location-config s3Url=http://<minio-ip>:9000,s3ForcePathStyle="true"</minio-ip> - 安装后检查
kubectl -n velero get pods,确保所有 Pod 进入Running状态;再运行velero backup-location get确认备份位置 Ready
执行备份与恢复验证
验证是部署闭环的关键环节,不能跳过。
- 创建测试命名空间和资源(如 Nginx Deployment + PVC),然后执行:
velero backup create nginx-backup --include-namespaces nginx-test - 等待状态变为
Completed(可用velero backup describe nginx-backup查看进度),再检查 MinIO 中对应 Bucket 是否生成了backups/nginx-backup/目录 - 模拟恢复:先删除测试命名空间,再运行
velero restore create --from-backup nginx-backup
观察velero restore get状态,并确认资源重建成功、PVC 数据可读
注意事项与常见调整
实际部署中几个细节容易影响稳定性:
- Kubernetes 版本需 ≥ 1.19,且集群必须启用
admissionregistration.k8s.io/v1和 RBAC;执行kubectl auth can-i --list确保当前用户有cluster-admin权限 - 若使用集群内 MinIO(如 StatefulSet 部署),
s3Url应设为http://minio.kube-public.svc:9000,并确保 Service 可解析 - PV 备份默认关闭,如需启用,需配合 CSI 驱动配置
VolumeSnapshotLocation,或启用--use-restic参数启动节点代理










