掌握Velero:輕松備份和恢復(fù)你的Kubernetes集群
共 6240字,需瀏覽 13分鐘
·
2024-07-26 17:40
Velero 簡介
Velero 是 heptio 團(tuán)隊(duì)(被 VMWare 收購)開源的 Kubernetes 集群備份、遷移工具。
Velero 使用對象存儲(chǔ)保存集群資源。默認(rèn)支持的對象存儲(chǔ)有 AWS、Azure、GCP ,兼容 S3 協(xié)議,也可以通過插件來擴(kuò)展到其他平臺(tái),比如 Aliyun OSS。
目前,Velero 不具備版本管理功能,只能進(jìn)行增量恢復(fù),不會(huì)進(jìn)行刪除或覆蓋操作。
2. Velero 工作原理
Velero 首先會(huì)在集群中創(chuàng)建各種 CRD 以及相關(guān)的控制器,通過對 CRD 對象的操作完成備份、恢復(fù)行為。Velero 的工作原理圖如下:
Velero 客戶端調(diào)用 Kubernetes API 服務(wù)器創(chuàng)建 Backup 對象。
BackupController 監(jiān)聽 Backup 對象變化,以執(zhí)行備份過程。
備份時(shí),BackupController 通過 API Server 查詢相關(guān)數(shù)據(jù)。
備份后,BackupController 將數(shù)據(jù)上傳到對象存儲(chǔ)。
運(yùn)維拓?fù)鋱D如下:
在所有集群上安裝 Velero,運(yùn)維人員通過 Velero Client 給 Velero Server 發(fā)送備份、恢復(fù)請求。Velero Server 推拉指定的 Kubernetes 對象的數(shù)據(jù)。這些數(shù)據(jù)以 Json 格式壓縮存儲(chǔ)在對象存儲(chǔ)服務(wù)中。
下圖是備份數(shù)據(jù)的目錄結(jié)構(gòu):
3. 安裝 Velero
3.1 下載文件
二進(jìn)制文件下載地址:Github。
這里以 CentOS 操作系統(tǒng)、Velero 1.6.0 為例:
下載二進(jìn)制文件,然后復(fù)制到 /user/local/bin 目錄下。
1、下載壓縮包并解壓
wget https://github.com/vmware-tanzu/velero/releases/download/v1.6.0/velero-v1.6.0-linux-amd64.tar.gztar -zxvf velero-v1.6.0-linux-amd64.tar.gz && cd velero-v1.6.0-linux-amd64/
2、查看目錄結(jié)構(gòu)
[root@m-master126 velero-v1.6.0-linux-amd64]# tree.├── examples│ ├── minio│ │ └── 00-minio-deployment.yaml│ ├── nginx-app│ │ ├── base.yaml│ │ ├── README.md│ │ └── with-pv.yaml│ └── README.md├── LICENSE└── velero3 directories, 7 files
3.2 配置對象存儲(chǔ)服務(wù)
考慮到可能沒有直接可用的對象存儲(chǔ)服務(wù),本文使用 Velero 提供的 minio 搭建一個(gè)對象存儲(chǔ)服務(wù)。如果是公有云服務(wù),這里部署 minio 的步驟可以省略,只需要?jiǎng)?chuàng)建 credentials-velero 文件。
1、創(chuàng)建 minio 服務(wù)
設(shè)置為 NodePort 類型
sed -i "/type: /s#ClusterIP#NodePort#" examples/minio/00-minio-deployment.yaml
創(chuàng)建 minio 服務(wù)
kubectl apply -f examples/minio/00-minio-deployment.yaml
查看 service 訪問端口
[]NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEminio NodePort 10.233.11.92 <none> 9000:32304/TCP 60s
這里的 {minio_service_ip}:32304 服務(wù)將被用于存儲(chǔ) Velero 的備份數(shù)據(jù)。
訪問的話:直接瀏覽器輸入 http://{NodeIP:32304} 默認(rèn)賬戶信息:minio/minio123
2、創(chuàng)建 minio 的訪問密鑰文件 credentials-velero
cat <<'EOF' > credentials-velero[default]aws_access_key_id = minioaws_secret_access_key = minio123EOF
ls查看下創(chuàng)建的訪問密鑰文件
[]credentials-velero examples LICENSE velero
3.3 安裝 Velero 客戶端
拷貝可執(zhí)行文件 velero
cp velero /usr/local/bin/
3.4 安裝 Velero 服務(wù)端
執(zhí)行安裝命令
velero install \--plugins harbor.openserver.cn:443/library/velero/velero-plugin-for-aws:v1.0.0 \--provider aws \--bucket velero \--namespace velero \--secret-file ./credentials-velero \--velero-pod-cpu-request 200m \--velero-pod-mem-request 200Mi \--velero-pod-cpu-limit 1000m \--velero-pod-mem-limit 1000Mi \--use-volume-snapshots=false \--use-restic \--restic-pod-cpu-request 200m \--restic-pod-mem-request 200Mi \--restic-pod-cpu-limit 1000m \--restic-pod-mem-limit 1000Mi \--backup-location-config region=minio,s3ForcePathStyle="true",s3Url=http://{NodeIp}:32304
值得注意的是use-restic 開啟了 PV 備份的支持。執(zhí)行安裝命令,會(huì)有回顯日志。下面繼續(xù)查看新創(chuàng)建的相關(guān)資源:
[]backups.velero.io 2021-05-31T12:54:19Zbackupstoragelocations.velero.io 2021-05-31T12:54:19Zdeletebackuprequests.velero.io 2021-05-31T12:54:19Zdownloadrequests.velero.io 2021-05-31T12:54:19Zpodvolumebackups.velero.io 2021-05-31T12:54:19Zpodvolumerestores.velero.io 2021-05-31T12:54:19Zresticrepositories.velero.io 2021-05-31T12:54:19Zrestores.velero.io 2021-05-31T12:54:19Zschedules.velero.io 2021-05-31T12:54:19Zserverstatusrequests.velero.io 2021-05-31T12:54:19Zvolumesnapshotlocations.velero.io 2021-05-31T12:54:19Z
velero-v1.6.0-linux-amd64]# kubectl get all -n veleroNAME READY STATUS RESTARTS AGE1/1 Running 0 14h0/1 Completed 0 14h1/1 Running 0 14h1/1 Running 0 14h1/1 Running 0 14h1/1 Running 0 14h1/1 Running 0 14hNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGENodePort 10.233.11.92 <none> 9000:32304/TCP 14hNAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE4 4 4 4 4 <none> 14hNAME READY UP-TO-DATE AVAILABLE AGE1/1 1 1 14h1/1 1 1 14hNAME DESIRED CURRENT READY AGE1 1 1 14h1 1 1 14hNAME COMPLETIONS DURATION AGE1/1 3s 14h
可以看到相關(guān)服務(wù)已經(jīng)正常運(yùn)行,Job 任務(wù)正常完成退出,大量 CRD 被創(chuàng)建。
3.5 卸載 Velero 服務(wù)端
kubectl delete namespace/velero clusterrolebinding/velerokubectl delete crds -l component=velero
鏈接:https://www.cnblogs.com/zhangmingcheng/p/14836274.html
(版權(quán)歸原作者所有,侵刪)
