Velero 簡介
Velero 是 heptio 團(tuán)隊(被 VMWare 收購)開源的 Kubernetes 集群備份、遷移工具。
Velero 使用對象存儲保存集群資源。默認(rèn)支持的對象存儲有 AWS、Azure、GCP ,兼容 S3 協(xié)議,也可以通過插件來擴展到其他平臺,比如 Aliyun OSS。
目前,Velero 不具備版本管理功能,只能進(jìn)行增量恢復(fù),不會進(jìn)行刪除或覆蓋操作。
2. Velero 工作原理
Velero 首先會在集群中創(chuàng)建各種 CRD 以及相關(guān)的控制器,通過對 CRD 對象的操作完成備份、恢復(fù)行為。Velero 的工作原理圖如下:
Velero 客戶端調(diào)用 Kubernetes API 服務(wù)器創(chuàng)建 Backup 對象。
BackupController 監(jiān)聽 Backup 對象變化,以執(zhí)行備份過程。
備份時,BackupController 通過 API Server 查詢相關(guān)數(shù)據(jù)。
備份后,BackupController 將數(shù)據(jù)上傳到對象存儲。
運維拓?fù)鋱D如下:
在所有集群上安裝 Velero,運維人員通過 Velero Client 給 Velero Server 發(fā)送備份、恢復(fù)請求。Velero Server 推拉指定的 Kubernetes 對象的數(shù)據(jù)。這些數(shù)據(jù)以 Json 格式壓縮存儲在對象存儲服務(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.gz tar-zxvfvelero-v1.6.0-linux-amd64.tar.gz&&cdvelero-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 └── velero 3 directories, 7 files
3.2 配置對象存儲服務(wù)
考慮到可能沒有直接可用的對象存儲服務(wù),本文使用 Velero 提供的 minio 搭建一個對象存儲服務(wù)。如果是公有云服務(wù),這里部署 minio 的步驟可以省略,只需要創(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 訪問端口
[root@m-master126 velero-v1.6.0-linux-amd64]# kubectl get svc -n velero NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE minio NodePort 10.233.11.929000:32304/TCP 60s
這里的 {minio_service_ip}:32304 服務(wù)將被用于存儲 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 = minio aws_secret_access_key = minio123 EOF
ls查看下創(chuàng)建的訪問密鑰文件
[root@m-master126 velero-v1.6.0-linux-amd64]# ls 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í)行安裝命令,會有回顯日志。下面繼續(xù)查看新創(chuàng)建的相關(guān)資源:
[root@m-master126 velero-v1.6.0-linux-amd64]# kubectl get crd|grep velero backups.velero.io 2021-05-31T12:54:19Z backupstoragelocations.velero.io 2021-05-31T12:54:19Z deletebackuprequests.velero.io 2021-05-31T12:54:19Z downloadrequests.velero.io 2021-05-31T12:54:19Z podvolumebackups.velero.io 2021-05-31T12:54:19Z podvolumerestores.velero.io 2021-05-31T12:54:19Z resticrepositories.velero.io 2021-05-31T12:54:19Z restores.velero.io 2021-05-31T12:54:19Z schedules.velero.io 2021-05-31T12:54:19Z serverstatusrequests.velero.io 2021-05-31T12:54:19Z volumesnapshotlocations.velero.io 2021-05-31T12:54:19Z
[root@m-master126 velero-v1.6.0-linux-amd64]# kubectl get all -n velero NAME READY STATUS RESTARTS AGE pod/minio-7b4ff54f67-kx259 1/1 Running 0 14h pod/minio-setup-mx8d5 0/1 Completed 0 14h pod/restic-c6hkt 1/1 Running 0 14h pod/restic-gfkwq 1/1 Running 0 14h pod/restic-j5bjr 1/1 Running 0 14h pod/restic-zrkzn 1/1 Running 0 14h pod/velero-df6dcd97-6qjj4 1/1 Running 0 14h NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/minio NodePort 10.233.11.929000:32304/TCP 14h NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE daemonset.apps/restic 4 4 4 4 4 14h NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/minio 1/1 1 1 14h deployment.apps/velero 1/1 1 1 14h NAME DESIRED CURRENT READY AGE replicaset.apps/minio-7b4ff54f67 1 1 1 14h replicaset.apps/velero-df6dcd97 1 1 1 14h NAME COMPLETIONS DURATION AGE job.batch/minio-setup 1/1 3s 14h
可以看到相關(guān)服務(wù)已經(jīng)正常運行,Job 任務(wù)正常完成退出,大量 CRD 被創(chuàng)建。
3.5 卸載 Velero 服務(wù)端
kubectldeletenamespace/veleroclusterrolebinding/velero kubectl delete crds -l component=velero
鏈接:https://www.cnblogs.com/zhangmingcheng/p/14836274.html
-
服務(wù)器
+關(guān)注
關(guān)注
12文章
9123瀏覽量
85322 -
集群
+關(guān)注
關(guān)注
0文章
86瀏覽量
17173 -
kubernetes
+關(guān)注
關(guān)注
0文章
224瀏覽量
8709
原文標(biāo)題:掌握Velero:輕松備份和恢復(fù)你的Kubernetes集群
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論