“ 運(yùn)維任何系統(tǒng),都要提前設(shè)計(jì)好災(zāi)備方案。velero就是k8s集群的救命措施”
Velero 是一種云原生的 Kubernetes 容災(zāi)解決方案,支持標(biāo)準(zhǔn)的K8S集群。
它是一個(gè)開(kāi)源的安全備份和恢復(fù)工具,支持災(zāi)難恢復(fù),遷移 Kubernetes 集群資源和持久的卷。
除了災(zāi)備之外它還能做資源移轉(zhuǎn),支持把容器應(yīng)用從一個(gè)集群遷移到另一個(gè)集群。
該方案功能強(qiáng)大,但是操作稍微復(fù)雜些,需要安裝相應(yīng)的客戶(hù)端和服務(wù)端。
01Velero工作流程:
velero的工作原理

velero的工作原理簡(jiǎn)單來(lái)說(shuō),就是velero在A集群執(zhí)行備份操作,然后將備份的文件放在一個(gè)遠(yuǎn)程文件服務(wù),在B集群使用velero進(jìn)行恢復(fù)操作。
如果集群主要是無(wú)狀態(tài)應(yīng)用,備份的都是yml文件,這種情況下一個(gè)集群的備份文件并不大
02 安裝部署
安裝客戶(hù)端工具
我使用的是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服務(wù)
velero需要一個(gè)文件服務(wù)來(lái)存儲(chǔ)備份的文件。通常是使用云服務(wù),在安裝velero時(shí)需要指定云服務(wù)的plugin,velero-plug中有aws以及阿里云的插件,但是我司是使用華為部署的私有云服務(wù)。發(fā)現(xiàn)并沒(méi)有huawei的plugin。經(jīng)過(guò)與華為云溝通,得知華為的obs服務(wù)也是標(biāo)準(zhǔn)的s3協(xié)議的,可以直接用aws插件。
如果你沒(méi)有云文件服務(wù),建議自己部署minio,minio也是標(biāo)準(zhǔn)的S3存儲(chǔ)。
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
幾點(diǎn)說(shuō)明:
因?yàn)榫W(wǎng)絡(luò)問(wèn)題,直接下載velero的鏡像失敗,所以我提前下載了需要的鏡像,并傳到了我司的私有倉(cāng)庫(kù)。
secret-file是存放連接文件服務(wù)的鑒權(quán)信息
cat>/root/velero/velero-credentials<<EOF
[default]
aws_access_key_id = xxx
aws_secret_access_key = xxxx
EOF
03 備份&查看&恢復(fù)
備份
velero默認(rèn)保存30天,如果需要修改
一次性備份
velero backup create test-backup --include-namespaces test
備份名:nginx-backup
指定備份的namespace是test
# 備份全部
velero backup create backup-all
定時(shí)任務(wù)
# 創(chuàng)建一個(gè)定時(shí)任務(wù)
velero create schedule backup-all --schedule="0 17 * * *"
定時(shí)任務(wù)就是全量備份的
寫(xiě)17是因?yàn)闀r(shí)區(qū)問(wèn)題。17 + 8 = 在1點(diǎn)備份
備份持久化卷
測(cè)試部署一個(gè)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
查看定時(shí)任務(wù)
velero get schedules
查看恢復(fù)
velero get restore
查看備份地址
velero get backup-locations
恢復(fù)
從backup恢復(fù)
最基本的操作
velero restore create RESTORE_NAME --from-backup BACKUP_NAME
從schedule恢復(fù)
velero restore create restore-sch --from-schedule backup-all --preserve-nodeports --include-namespaces testvelero -n velero2
參數(shù)
--include-namespaces stringArray 可以選擇性的從全部backup里恢復(fù)哪些ns
也可以恢復(fù)到其他ns,使用--namespace-mappings進(jìn)行映射
velero restore create RESTORE_NAME \
--from-backup BACKUP_NAME \
--namespace-mappings old-ns-1:new-ns-1,old-ns-2:new-ns-2