Velero + MinIO 搭建 Kubernetes 备份与恢复(含实操步骤)

Kubernetes 默认不会替你保管数据。没有备份策略的集群,遇到误删或故障基本无解。本文用最常见、最稳的组合 Velero + MinIO 完成备份与恢复,覆盖安装、验证、备份与回滚,并补充数据卷备份的关键注意点。

一、为什么选 Velero + MinIO?

  • 完全开源,不依赖云厂商对象存储。
  • MinIO 部署轻量,Docker 一条命令即可启动。
  • Velero 功能齐全:备份、恢复、迁移、定时任务都支持。
  • 数据可控,备份落在自建对象存储,便于合规与成本管理。

二、整体架构与流程

Velero 负责采集 Kubernetes 资源清单与(可选)数据卷快照,并将备份写入 MinIO。恢复时从 MinIO 拉取备份并重建资源。

三、部署 MinIO(Docker 方式)

准备数据目录:

mkdir -p /data/minio/data
chmod -R 777 /data/minio/data

启动 MinIO:

docker run -d --name minio \
  --restart=always \
  -p 9000:9000 -p 9001:9001 \
  -e MINIO_ROOT_USER=miniouser \
  -e MINIO_ROOT_PASSWORD='Manager@2025' \
  -v /data/minio/data:/data \
  minio/minio server /data --console-address ":9001"

访问控制台:http://服务器IP:9001,创建 bucket:velero-backups

四、安装 Velero

4.1 下载 Velero 客户端

下载地址:https://github.com/vmware-tanzu/velero/releases

先核对兼容矩阵,示例:K8s 1.33.5 可选 Velero 1.17.x。

tar -xvf velero-v1.17.1-linux-amd64.tar.gz
cp velero-v1.17.1-linux-amd64/velero /usr/local/bin/
velero version

4.2 准备 MinIO 凭证

cat > user-minio << EOF
[default]
aws_access_key_id=miniouser
aws_secret_access_key=Manager@2025
EOF

4.3 安装 Velero 服务端

velero install \
  --provider aws \
  --plugins velero/velero-plugin-for-aws:v1.13.1 \
  --bucket velero-backups \
  --secret-file ./user-minio \
  --use-volume-snapshots=false \
  --backup-location-config region=minio,s3ForcePathStyle="true",s3Url=http://10.0.0.207:9000 \
  --namespace velero

参数说明:

  • --provider aws:MinIO 兼容 S3 协议,因此使用 AWS provider。
  • --plugins velero-plugin-for-aws:S3 兼容插件。
  • --bucket velero-backups:MinIO 中创建的桶名。
  • --use-volume-snapshots=false:此处仅备份元数据,数据卷备份见下文。
  • s3Url:MinIO API 地址(9000 端口)。

4.4 验证服务端状态

kubectl get pod -n velero
kubectl get deploy -n velero
kubectl get BackupStorageLocation -n velero
velero version

当 BackupStorageLocation 状态为 Available 即部署成功。

五、备份与恢复

5.1 备份整个集群

velero backup create cluster-backup
velero backup get

5.2 备份指定命名空间

velero backup create nginx-backup --include-namespaces nginx
velero backup describe nginx-backup --details

5.3 执行恢复

velero restore create --from-backup cluster-backup
velero restore get

六、数据卷备份的关键点

默认情况下(use-volume-snapshots=false)只备份资源元数据。如果需要真正的数据备份,需要启用以下方案之一:

  • CSI Snapshot:存储支持快照时使用。
  • Velero Node Agent:文件级备份,适合本地存储或不支持快照的场景。

只恢复元数据不等于恢复业务数据,这一点很容易被忽略。

七、常见问题排查

  • BackupStorageLocation 不可用:检查 MinIO 地址、凭证、网络连通性。
  • 备份失败:查看 velero backup logs <backup-name>
  • 恢复后数据丢失:确认是否启用了数据卷备份机制。

总结

Velero + MinIO 是中小团队最容易落地、稳定性足够的 Kubernetes 备份组合。建议先跑通元数据备份,再逐步引入数据卷备份与定时任务,形成可持续的备份闭环。

AWS账单代付

AWS/阿里云/谷歌云官方认证架构师,专注云计算解决方案。