K8s 备份与恢复利器:Velero 实战指南
Velero 是K8s 专用备份、恢复、迁移工具,由 VMware 开源、CNCF 托管。对 Kubernetes 集群里的应用配置、存储卷数据做备份;支持误删回滚、集群灾备、跨集群迁移。
核心作用
对 Kubernetes 集群里的应用配置、存储卷数据做备份;支持误删回滚、集群灾备、跨集群迁移。
工作方式
-
把 Deployment、Service、ConfigMap 等 K8s 资源打包;
-
搭配 Restic 可同步备份容器持久卷(PVC)里的文件 / 数据库数据;
-
数据统一存到 S3 兼容对象存储(MinIO、腾讯云 COS、阿里云 OSS 等)。

一、安装velero客户端(master节点执行)
地址官方安装地址:https://github.com/velero-io/velero/releases/tag/v1.18.1
bash
wget https://github.com/velero-io/velero/releases/download/v1.18.1/velero-v1.18.1-linux-amd64.tar.g
解压
bash
tar -zxvf velero-v1.18.1-linux-amd64.tar.gz
得到三个东西,我们需要用到的是velero二进制文件

把velero拷贝到/usr/local/bin/下,这样我们就可以全局使用velero
bash
cp velero /usr/local/bin/
二、MinIo创建Bucket
在MinIo中创建一个Bucket,取名为k8s

三、部署velero服务端(master节点执行)
1.创建minio秘钥文件
文件名:access-minio
ini
[default]
aws_access_key_id = minioadmin
aws_secret_access_key = minioadmin123
2.创建部署velero服务端脚本
bash
velero install \
--provider aws \ # 存储提供商:MinIO 兼容 S3 协议,所以固定写 aws
--plugins velero/velero-plugin-for-aws:v1.9.0 \ # 官方 S3 兼容插件,对接对象存储
--bucket k8s \ # MinIO 里的桶名称(上面创建的桶叫 k8s)
--secret-file ./access-minio \ # 上面创建的MinIO 认证密钥文件
--kubeconfig=/root/.kube/config \ # 指定 kubeconfig,让 velero 连接集群
--use-volume-snapshots=false \ # 关闭云厂商卷快照(用的是自建 MinIO,不需要)
--backup-location-config \ # 备份存储位置配置(下面一堆都是它的子参数)
region=minio \ # 区域:MinIO 无区域概念,随便填 minio
s3ForcePathStyle="true" \ # MinIO 强制开启路径模式(必须 true)
s3Url=http://minio.test.com:9000 # 你的MinIO API 地址(注意是 9000 端口,不是控制台 9001)
3.执行脚本
bash
bash velero.sh
执行完脚本可以看到在velero命名空间下的pod创建成功,并处于running

四、备份
我们对命名空间test下的一个pod进行测试

创建一个名为 test-backup 的备份,只备份 test 这个命名空间里的所有资源。
bash
velero backup create test-backup --include-namespaces test
返回以下内容代表成功创建

查看备份状态,可以看到 STATUS:Completed
bash
velero get backup

在MinIo web页面中可以看到备份的资源文件

五、还原测试
1.删除test命名空间
bash
kubectl delete ns test

2.还原
bash
velero restore create --from-backup test-backup --kubeconfig=/root/.kube/config
可以看到资源已经全部还原
