velero备份k8s
- velero
- 2天前
- 18热度
- 0评论
1.简介
Velero 是vmware开源的一个云原生的灾难恢复和迁移工具,意思是帆船,非常符合Kubernetes社区的命名风格,它本身也是开源的,采用Go语言编写,可以安全的备份、恢复和迁移Kubernetes集群资源数据;官网https://velero.io/。
它支持标准的K8S集群,既可以是私有云平台也可以是公有云,除了灾备之外它还能做资源移转,支持把容器应用从一个集群迁移到另一个集群。
它的工作方式就是把kubernetes中的数据备份到对象存储以实现高可用和持久化,默认的备份保存时间为720小时,并在需要的时候进行下载和恢复。
它由一个客户端和一个服务端组成
客户端:运行在本地的命令行工具,只要配置好kubectl和kubeconfig认证文件就可使用,非常简单
服务端:运行在Kubernetes集群之上,负责执行具体的备份和恢复操作
2.安装搭建velero
备注:采用minio作为velero的后端存储
master节点部署velero
# 下载客户端
wget https://github.com/vmware-tanzu/velero/releases/download/v1.13.1/velero-v1.13.1-linux-amd64.tar.gz
# 解压
tar -zxvf velero-v1.13.1-linux-amd64.tar.gz
# 拷贝到/usr/bin目录下
chmod +x velero-v1.13.1-linux-amd64/velero
cp velero-v1.13.1-linux-amd64/velero /usr/bin/
# 检查验证
velero --version
配置velero连接minio的配置
# 创建工作目录 mkdir -p /opt/velero
# 创建访问minio的认证文件,这个velero-auth.txt文件中记录了访问对象存储minio的用户名和密码
# aws_access_key_id这个变量用来指定对象存储用户名
# aws_secret_access_key变量用来指定密码
cat >velero-auth.txt << EOF
[default]
aws_access_key_id = admin
aws_secret_access_key = 123456
EOF
在minio中创建一个bucket,命名为:k8s-backup
服务端安装部署到k8s集群
velero install \
--kubeconfig /root/.kube/config \
--provider aws \
--plugins velero/velero-plugin-for-aws:latest \
--use-volume-snapshots=false \
--uploader-type=restic \
--use-node-agent \
--bucket k8s-backup \
--secret-file /opt/velero/velero-auth.txt \
--log_file_max_size 512 \
--backup-location-config region=minio,s3ForcePathStyle="true",s3Url=http://192.168.1.1:9000
数据备份
单次备份执行以下命令,该命令会默认备份集群所有资源(持久卷不会备份)
velero backup create <backupName>
备份指定namespace下的资源,则可以加--include-namespaces参数
velero backup create <backupName> --include-namespaces ns1,ns2
可通过下面命令查看任务状态
velero backup get
备份有效期默认是30天,到期自动删除。如果需要手动删除,则执行命令
velero backup delete <backupName>
定时备份
velero schedule create <backupName> --schedule="0 */12 * * *"
恢复数据
kubectl delete pod test
velero restore create --from-backup k8s-backup-20250101 --wait
# 等待y一分钟
kubectl get pod
常用的恢复命令
velero restore get:查看已经restore的资源
velero restore create restore-1 --from-backup backup-1:从backup-1恢复
# 仅恢复指定空间资源
velero restore create --from-backup backup-2 --include-namespace=default