Velero基本介紹
官方文件:https://velero.io/docs/v1.4/
基本工作原理:
不管需求是實現什麼,比如:叢集遷移、恢復、備份,其核心都是通過velero client CLI建立一個backup,然後遷移和恢復等操作都是需要這個backup來完成的。
建立一個backup,velero backup create test-backup
:
- Velero client 呼叫Kubernetes API伺服器以建立Backup。
- BackupController檢測到新的backup,並驗證。
- BackupController開始backup,通過請求ApiServer獲取資源來收集資料以進行備份。
- BackupController將要備份的資料上傳到一個物件儲存伺服器,如AMS S3。
- 預設情況下,
velero backup create
會生產每一個PV的磁碟快照。您可以通過指定其他引數來調整快照。執行velero backup create --help
以檢視可用的引數。可以使用選項禁用快照--snapshot-volumes=false
。
安裝需要的工具
安裝物件儲存伺服器:Minio
Velero支援的storage providers:https://velero.io/docs/v1.4/supported-providers/
這裡使用本地安裝的物件儲存伺服器,Minio
安裝的Minio需要能被兩個叢集(叢集遷移,一個到另外一個),都能訪問到。
安裝Velero Client
Velero Client就是命令列工具,安裝版本應該是v1.3.0, or later。
官方提供了多種安裝方式:https://velero.io/docs/master/basic-install/
安裝Velero Server
使用Velero
首先需要明確一點是:不管需求是什麼,比如:叢集遷移、恢復、備份,其核心都是通過backup實現的。災難恢復是如果出現意外,那麼從備份的backup恢復這個叢集,而遷移的過程是使用當前叢集的backup來在另外一個叢集恢復。
Velero常用命令
備份Backup
velero backup get
:檢視已備份的
velero backup create <backupname>
:建立一個backup包含所有資源
velero backup create <backupname> --include-namespaces ns1,ns2
:為ns1,ns2名稱空間下的資源備份
velero backup create <backupname> --exclude-namespaces ns1,ns2
:排除掉ns1,ns2的名稱空間,建立備份
velero backup create <backupname> --include-resources resource1,resource2
:為指定資源備份
`velero backup create
--storage-location <localpath>
:將建立的備份儲存到本地路徑下
-l, --selector
:通過指定label來匹配要back up的資源
除此以外還包括:delete、describe、logs
恢復Restore
velero restore get
:檢視已經restore的資源
vel ero restore create restore-1 --from-backup backup-1
:從backup-1恢復
velero restore create --from-backup backup-2 --include-resources persistentvolumeclaims,persistentvolumes
:僅恢復指定資源,同樣使用--exclude-resources
:不恢復某資源
velero restore create --from-schedule schedule-1
:從建立的schedule恢復
除此以外還包括:delete、describe、logs
Schedule定時備份
Schedule是針對backup的,是獨立於backup之外的一種資源,但他本身也是一個backup只不過是具有了定時的功能,符合Cron規則。
velero create schedule NAME --schedule="0 */6 * * *"
:每6小時自動備份一次
velero create schedule NAME --schedule="@every 24h" --include-namespaces web
:因為schedule也是一種backup,所以建立backup指定的引數這裡也都可以使用
除此以外還包括:delete、describe、logs
介紹:
Velero 可以幫助你:
- 對叢集進行備份並在丟失的情況下進行恢復。
- 將叢集資源遷移到其他叢集。
- 將生產叢集複製到開發和測試叢集。
Velero 包括:
- 在叢集上執行的服務端
- 本地的CLI客戶端
推薦用這個安裝:https://velero.io/docs/master/contributions/minio/
Velero v1.4.0下面兩線之間是過程,結論是 兩個叢集裡安裝下面這個,參考的上面的這個url:
velero install \
--provider aws \
--plugins velero/velero-plugin-for-aws:v1.0.0 \
--kubeconfig /etc/rancher/k3s/k3s.yaml \
--bucket velero \
--secret-file ./credentials-velero \
--use-volume-snapshots=false \
--backup-location-config region=minio,s3ForcePathStyle="true",s3Url=http://minio.lab3.cn \
--use-restic \
--wait\
執行安裝命令:
velero install \
--image registry.cn-hangzhou.aliyuncs.com/acs/velero:latest \
--provider aws \
--bucket velero \
--namespace velero \
--secret-file ./credentials-velero \
--velero-pod-cpu-request 200m \
--velero-pod-mem-request 200Mi \
--velero-pod-cpu-limit 200m \
--velero-pod-mem-limit 200Mi \
--use-volume-snapshots=false \
--use-restic \
--restic-pod-cpu-request 200m \
--restic-pod-mem-request 200Mi \
--restic-pod-cpu-limit 200m \
--restic-pod-mem-limit 200Mi \
--backup-location-config region=minio,s3ForcePathStyle="false",s3Url=http://127.0.0.1:30464
出現錯誤:
An error occurred: --plugins flag is required
需要新增一個外掛:
velero plugin add velero/velero-plugin-for-aws:v1.0.0
-
An error occurred: deployments.apps "velero" not found
嘗試下面這個 ok:
velero install \
--plugins velero/velero-plugin-for-aws:v1.0.0 \
--image registry.cn-hangzhou.aliyuncs.com/acs/velero:latest \
--provider aws \
--bucket velero \
--namespace velero \
--secret-file ./credentials-velero \
--velero-pod-cpu-request 200m \
--velero-pod-mem-request 200Mi \
--velero-pod-cpu-limit 200m \
--velero-pod-mem-limit 200Mi \
--use-volume-snapshots=false \
--use-restic \
--restic-pod-cpu-request 200m \
--restic-pod-mem-request 200Mi \
--restic-pod-cpu-limit 200m \
--restic-pod-mem-limit 200Mi \
--backup-location-config region=minio,s3ForcePathStyle="false",s3Url=http://127.0.0.1:30464
刪除安裝的:
kubectl delete namespace/velero clusterrolebinding/velero
kubectl delete crds -l component=velero
下一個出現的錯誤:
An error occurred: unknown flag: --feature
暫時解決:https://velero.io/docs/master/customize-installation/
用disable --feature來解決:
$ kubectl -n velero edit deploy/velero
$ kubectl -n velero edit daemonset/restic
下一個錯誤出現:
An error occurred: unable to register plugin (kind=VolumeSnapshotter, name=velero.io/aws, command=/plugins/velero-plugin-for-aws) because another plugin is already registered for this kind and name (command=/velero)