【K8S運(yùn)維】救命措施之velero容災(zāi)方案

運(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的工作原理

638f300201175f0abd32ffca8ade2e37.png

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ō)明:

  1. 因?yàn)榫W(wǎng)絡(luò)問(wèn)題,直接下載velero的鏡像失敗,所以我提前下載了需要的鏡像,并傳到了我司的私有倉(cāng)庫(kù)。

  2. 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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容