“ 运维任何系统,都要提前设计好灾备方案。velero就是k8s集群的救命措施”
Velero 是一种云原生的 Kubernetes 容灾解决方案,支持标准的K8S集群。
它是一个开源的安全备份和恢复工具,支持灾难恢复,迁移 Kubernetes 集群资源和持久的卷。
除了灾备之外它还能做资源移转,支持把容器应用从一个集群迁移到另一个集群。
该方案功能强大,但是操作稍微复杂些,需要安装相应的客户端和服务端。
01Velero工作流程:
velero的工作原理
![](https://img.haomeiwen.com/i5149787/7e8950ed5b9439c5.png)
velero的工作原理简单来说,就是velero在A集群执行备份操作,然后将备份的文件放在一个远程文件服务,在B集群使用velero进行恢复操作。
如果集群主要是无状态应用,备份的都是yml文件,这种情况下一个集群的备份文件并不大
02 安装部署
安装客户端工具
我使用的是1.7.0版本
wget https://github.com/vmware-tanzu/velero/releases/download/v1.7.0/velero-v1.7.0-linux-amd64.tar.gz
tar -zxvf velero-v1.7.0-linux-amd64.tar.gz
cd velero-v1.7.0-linux-amd64
chmod +x velero
mv velero /usr/bin
安装velero服务
velero需要一个文件服务来存储备份的文件。通常是使用云服务,在安装velero时需要指定云服务的plugin,velero-plug中有aws以及阿里云的插件,但是我司是使用华为部署的私有云服务。发现并没有huawei的plugin。经过与华为云沟通,得知华为的obs服务也是标准的s3协议的,可以直接用aws插件。
如果你没有云文件服务,建议自己部署minio,minio也是标准的S3存储。
velero install \
--provider aws \
--plugins 私有haibor地址/velero/velero-plugin-for-aws:v1.3.0 \
--bucket 华为云的bucket \
--prefix 备份目录名 \
--secret-file /root/velero/velero-credentials \
--use-restic \
--restic-pod-mem-limit=2048Mi \
--restic-pod-mem-request=2048Mi \
--velero-pod-mem-limit=2048Mi \
--velero-pod-mem-request=2048Mi \
--use-volume-snapshots=false \
--backup-location-config region=cn-east-213,s3ForcePathStyle="true",s3Url=http://x.x.x.x
--image=私有haibor地址/velero/velero:v1.7.0
几点说明:
-
因为网络问题,直接下载velero的镜像失败,所以我提前下载了需要的镜像,并传到了我司的私有仓库。
-
secret-file是存放连接文件服务的鉴权信息
cat>/root/velero/velero-credentials<<EOF
[default]
aws_access_key_id = xxx
aws_secret_access_key = xxxx
EOF
03 备份&查看&恢复
备份
velero默认保存30天,如果需要修改
一次性备份
velero backup create test-backup --include-namespaces test
备份名:nginx-backup
指定备份的namespace是test
# 备份全部
velero backup create backup-all
定时任务
# 创建一个定时任务
velero create schedule backup-all --schedule="0 17 * * *"
定时任务就是全量备份的
写17是因为时区问题。17 + 8 = 在1点备份
备份持久化卷
测试部署一个wordpress
# helm install my-wordpress bitnami/wordpress -n wordpress
备份
velero backup create wordpress-backup --include-namespaces wordpress --default-volumes-to-restic -n velero
查看
查看备份
velero get backups
查看定时任务
velero get schedules
查看恢复
velero get restore
查看备份地址
velero get backup-locations
恢复
从backup恢复
最基本的操作
velero restore create RESTORE_NAME --from-backup BACKUP_NAME
从schedule恢复
velero restore create restore-sch --from-schedule backup-all --preserve-nodeports --include-namespaces testvelero -n velero2
参数
--include-namespaces stringArray 可以选择性的从全部backup里恢复哪些ns
也可以恢复到其他ns,使用--namespace-mappings进行映射
velero restore create RESTORE_NAME \
--from-backup BACKUP_NAME \
--namespace-mappings old-ns-1:new-ns-1,old-ns-2:new-ns-2
网友评论