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