您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關TKE中怎么使用 Velero 遷移復制集群資源,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
在需要被遷移的集群和目標集群上都安裝 Velero 實例,并且兩個集群的 Velero 實例指向相同的騰訊云 COS 對象存儲位置,使用 Velero 在需要被遷移的集群執行備份操作生成備份數據存儲到騰訊云 COS ,然后在目標集群上使用 Velero 執行數據的還原操作實現遷移,遷移原理如下:
已 注冊騰訊云賬戶。
已開通騰訊云 COS 服務。
已有需要被遷移的 TKE 集群(以下稱作集群 A),已創建遷移目標的 TKE 集群(以下稱作集群 B),創建 TKE 集群請參閱 創建集群。
集群 A 和 集群 B 都需要安裝 Velero 實例(1.5版本以上),并且共用同一個騰訊云 COS 存儲桶作為 Velero 后端存儲,安裝步驟請參閱 配置存儲和安裝 Velero 。
從 1.5 版本開始,Velero 可以使用 Restic 備份所有pod卷,而不必單獨注釋每個 pod。默認情況下,此功能允許用戶使用 restic 備份所有 pod 卷,但以下卷情況除外:
本示例需要 Velero 1.5 以上版本且啟用 restic 來備份持久卷數據,請確保在安裝 Velero 階段開啟 --use-restic
和 --default-volumes-to-restic
參數,安裝步驟請參閱 配置存儲和安裝 Velero 。
掛載默認 Service Account Secret
的卷
掛載的 hostPath
類型卷
掛載 Kubernetes secrets
和 configmaps
的卷
在執行遷移過程中,請不要對兩邊集群資源做任何 CRUD 操作,以免在遷移過程中造成數據差異,最終導致遷移后的數據不一致。
盡量保證集群 B 和集群 A 工作節點的CPU、內存等規格配置相同或不要相差太大,以免出現遷移后的 Pods 因資源原因無法調度導致 Pending 的情況。
可以手動執行備份操作,也可以給 velero 設置定期自動備份,設置方法可以使用 velero schedule -h
查看。本示例將以 default 、default2 命名空間的資源情況作比較驗證,下圖可以看到集群 A 中兩個命名空間下的 Pods 和 PVC 資源情況:
提示:可以指定在備份期間執行一些自定義 Hook 操作。比如,需要在備份之前將運行應用程序的內存中的數據持久化到磁盤。 有關備份 Hook 的更多信息請參閱 備份 Hook 。
其中,集群中的 minio 對象存儲服務使用了持久卷,并且已經上傳了一些圖片數據,如下圖所示:
執行下面命令來備份集群中不包含 velero 命名空間(velero 安裝的默認命名空間)資源的其他所有資源,如果想自定義需要備份的集群資源范圍,可使用 velero create backup -h
查看支持的資源篩選參數。
velero backup create <BACKUP-NAME> --exclude-namespaces <NAMESPACE>
本示例我們創建一個 “default-all” 的集群備份,備份過程如下圖所示:
備份任務狀態顯示是 “Completed” 時,說明備份任務完成,可以通過 velero backup logs | grep error
命令檢查是否有備份操作發生錯誤,沒有輸出則說明備份過程無錯誤發生,如下圖所示:
注意:請確保備份過程未發生任何錯誤,假如 velero 在執行備份過程中發生錯誤,請排查解決后重新執行備份。
備份完成后,臨時將備份存儲位置更新為只讀模式(非必須,這可以防止在還原過程中 Velero 在備份存儲位置中創建或刪除備份對象):
kubectl patch backupstoragelocation default --namespace velero \ --type merge \ --patch '{"spec":{"accessMode":"ReadOnly"}}'
在執行還原操作前集群 B 中 default 、default2 命名空間下沒有任何工作負載資源,查看結果如下圖:
臨時將集群 B 中 Velero 備份存儲位置也更新為只讀模式(非必須,這可以防止在還原過程中 Velero 在備份存儲位置中創建或刪除備份對象):
kubectl patch backupstoragelocation default --namespace velero \ --type merge \ --patch '{"spec":{"accessMode":"ReadOnly"}}'
提示:可以選擇指定在還原期間或還原資源后執行自定義 Hook 操作。例如,可能需要在數據庫應用程序容器啟動之前執行自定義數據庫還原操作。 有關還原 Hook 的更多信息請參閱 還原 Hook。
在還原操作之前,需確保集群 B 中 的 Velero 資源與云存儲中的備份文件同步。默認同步間隔是1分鐘,可以使用--backup-sync-period
來配置同步間隔。可以使用下面命令查看集群 A 的備份是否已同步:
velero backup get <BACKUP-NAME>
獲取備份成功檢查無誤后,執行下面命令還原所有內容到集群 B 中:
velero restore create --from-backup <BACKUP-NAME>
本示例執行還原過程如下圖:
等待還原任務完成后查看還原日志, 可以使用下面命令查看還原是否有報錯和跳過信息:
# 查看遷移時是否有錯誤的還原信息 velero restore logs <BACKUP-NAME> | grep error # 查看遷移時跳過的還原操作 velero restore logs <BACKUP-NAME> | grep skip
從下圖可以看出沒有發生錯誤的還原步驟,但是有很多 “skipped” 步驟,是因為我們在備份集群資源時備份了不包含 velero 命名空間的所有集群資源,有一些同類型同名的集群資源已經存在了,如 kube-system下的集群資源,當還原過程中有資源沖突時,velero 會跳過還原的操作步驟。所以實際上還原過程是正常的,可以忽略這些 “skipped” 日志,假如有特殊情況可以分析下日志看看。
查看校驗集群 B 執行遷移操作后的集群資源,可以看到 default 、default2 命名空間下的 pods 和 PVC 資源已按預期遷移成功:
再通過 Web 管理頁面登錄集群 B 中的 monio 服務,可以看到 minio 服務中的圖片數據沒有丟失,說明持久卷數據也已按預期遷移成功。
至此,我們完成了 TKE 集群間資源的遷移,遷移操作完成后,請不要忘記把備份存儲位置恢復為讀寫模式(集群 A 和 集群B),以便下次備份任務可以成功使用:
kubectl patch backupstoragelocation default --namespace velero \ --type merge \ --patch '{"spec":{"accessMode":"ReadWrite"}}'
上述就是小編為大家分享的TKE中怎么使用 Velero 遷移復制集群資源了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。