如何备份和还原您的Kubernetes集群资源和持久卷?
眾所周知,Kubernetes可以協調連接在一起,作為一個工作單元,形成高可用性的計算機集群。Kubernetes包含許多抽象概念,這些抽象概念允許將容器化的應用程序部署到集群中,而無需將它們附加到單獨的機器上。
簡而言之,Kubernetes擁有以下特性:
- 便攜式:公有、私有、混合、多云 
- 可擴展:模塊化、可插拔、可掛鉤、可組合 
- 自我修復:自動放置、自動重啟、自動復制、自動縮放 
在本文中,我們將介紹如何使用Velero開源工具備份和還原Kubernetes集群資源和持久卷的步驟。
第一節 為什么要備份?
首先,讓我們了解您需要使用備份的典型方案,如果從災難中恢復,則可以減少恢復時間。Kubernetes 資源從一個集群遷移到另一個集群或更高版本的 Kubernetes ,需要復制環境以進行調試、開發等。
現在我們已經清楚了為什么需要備份了,接下來我們可以檢查要備份的對象列表。
要備份什么?Kubernetes資源存儲在etcd存儲中。etcd是一個一致且高度可用的鍵值存儲,用作所有集群數據的 Kubernetes 的后備存儲。您可以在官方文檔中找到有關 etcd 的詳細信息。集群中運行的有狀態應用程序的應用程序數據,即持久卷。
第二節 Velero如何運作
Velero( 以前稱為Heptio Ark )為您提供了備份和還原 Kubernetes 集群資源和持久卷的工具。
Velero包含:
- Ivacy VPN 
- 在集群上運行的服務器 
- 在本地運行的命令行客戶端 
每個Velero操作(例如:按需備份、計劃備份、還原等)都是自定義資源,使用Kubernetes自定義資源(CRD)定義并存儲在etcd存儲中。
當你運行命令 velero backup create test-backup:時。
1.Velero客戶端調用Kubernetes API服務器以創建一個 Backup 對象。
2.BackupController 看起來像一個新的 Backup 對象并執行驗證。
3.BackupController 開始備份操作。它通過查詢API服務器以獲取資源來收集數據以進行備份。
4.BackupController 調用對象存儲服務(例如AWS S3)以上傳備份文件。
在下一節中,我們將介紹有關如何備份和還原Kubernetes集群資源和持久卷的步驟。
第三節 先決條件
以下是此快速入門所需的先決條件:
1.具有Kubernetes最新穩定版本的集群
2.Kubectl CLI
在安裝之前,請檢查我們是否具有正確的Kubernetes版本。
步驟#1 下載Velero
使用以下命令下載最新版本的Velero:
curl -LO https://get.helm.sh/helm-v3.0.0-linux-amd64.tar.gz
使用Linux或者其他平臺的朋友,請參見發行頁面的說明。
解壓縮下載文件并將velero可執行文件移至/ usr / local / bin或您的路徑。
在您的本地目錄中創建特定于Velero的憑證文件(credentials-velero)。
echo "[default]?
aws_access_key_id = minio
aws_secret_access_key = minio123" > credentials-velero
Velero需要合適的存儲提供商來存儲備份和快照數據,在本演示中,我們將使用Minio,這是一個在本地集群上運行的S3兼容存儲服務,Minio實例將使用上述憑據。?
現在我們已經準備好憑據和群集,接下來就可以安裝Velero服務器了。
步驟#2 安裝Velero服務器
在以下步驟中,我們將啟動服務器和本地存儲服務。在Velero文件夾中,運行以下命令:
使用以下命令配置本地存儲服務:
kubectl apply -f examples/minio/00-minio-deployment.yaml使用以下命令啟動Velero服務器:
velero install \--provider aws \--bucket velero \--secret-file ./credentials-velero \--use-volume-snapshots=false \--backup-location-config region=minio,s3ForcePathStyle="true",s3Url=http://minio.velero.svc:9000現在,我們假設Velero在本地集群中運行,而沒有能夠提供快照的卷。
檢查是否成功創建部署了Velero。
步驟#3?部署示例應用程序
下一步是使用以下命令在集群上部署示例nginx應用程序:
kubectl apply -f velero/examples/nginx-app/base.yaml
檢查是否成功創建了示例應用程序部署。
步驟#4?備份
現在,我們將為與 app = nginx 標簽選擇器匹配的任何對象創建備份:
velero backup create nginx-backup --selector app=nginx
如果要備份除匹配標簽的對象以外的所有對象,則可以使用“ backup notin(ignore)”選項。
還有一些選項可用于基于 cron 表達式創建備份計劃。
要驗證備份是否已完成,請使用 describe 命令,如下所示:
velero backup describe nginx-backup
現在我們已經完成了備份操作,為了測試還原操作,我們將刪除命名空間。
驗證是否刪除了 nginx 服務和部署:
通常需要幾分鐘才能完全清理名稱空間。
步驟#5 Restore
要列出我們創建的備份,請使用以下命令:
velero restore get
要恢復我們創建的備份,請使用以下命令:
velero restore create --from-backup nginx-backup還原完成后,您可以檢查還原的部署是否返回名稱空間:
如果在還原操作過程中出現錯誤或警告,則可以使用以下命令檢查詳細信息:
velero restore describe <RESTORE_NAME>
恭喜! 我們已經成功進行了備份和還原。
如果由于某些限制而無法使用Velero,則可以始終使用 Kubectl CLI 從現有 Kubernetes 集群中導出資源定義,然后將其應用于目標集群。?
以下是導出對象的命令。
kubectl get deployment -o=yaml --export > deployments.yaml第四節 局限性
以下是Velero的已知限制:
- Velero當前每個提供商都支持一套憑據。 尚無法在不同的位置使用不同的憑據。 
- 卷快照受提供程序創建快照位置限制。 例如,AWS和Azure不允許您在不同卷所在區域中創建卷快照。 
- 每個Velero備份每個卷都有一個BackupStorageLocation和一個VolumeSnapshotLocation。無法將單個 Velero 備份同時發送到多個備份存儲位置,也不能將單個卷快照同時發送到多個位置。 
- 不支持跨提供商快照。 
總結
以上是生活随笔為你收集整理的如何备份和还原您的Kubernetes集群资源和持久卷?的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 刷新.NET
- 下一篇: C# WPF抽屉效果实现
