本文分享自華為雲社群《Kurator v0.5.0正式釋出! 打造統一的多叢集備份與儲存體驗》,作者: 雲容器大未來 。
Kurator 是由華為雲推出的開源分散式雲原生套件。面向分散式雲原生場景,Kurator 旨在為使用者提供一站式的解決方案,幫助使用者快速構建自己的分散式雲原生平臺。
在最新發布的 v0.5.0 版本中,Kurator 強化了其在多叢集環境中的應用備份與恢復,以及儲存管理的功能,以滿足使用者對於複雜部署的需求。本次更新主要包括以下兩項新特性:
- 統一叢集備份恢復與遷移:Kurator 現在支援一鍵定製化的備份與恢復多個叢集中的應用和資源,並透過統一檢視實時監控各叢集的進度;同時,還支援跨叢集資源的一鍵遷移功能。
- 統一分散式儲存:Kurator 實現了一致性的分散式儲存解決方案,其一站式部署讓使用者在多叢集環境下輕鬆實現塊儲存、檔案儲存和物件儲存的應用。
統一叢集備份恢復與遷移
在多雲和分散式環境的持續演變中,資料的安全性與可恢復性已經成為使用者高度關注的問題。對於企業來說,資料丟失往往是一個難以承受的打擊,可能導致嚴重的業務中斷和信譽損失。在以 Kubernetes 為行業標準的環境中,伴隨著服務數量和叢集規模的增長,資料管理的複雜度也隨之增加,這使得實施高效而靈活的備份策略變得尤為重要。
面對這種需求的不斷擴大和挑戰的增加,傳統的備份工具往往在多環境下展現出侷限性,難以提供一個無縫的統一解決方案。因此,Kurator 的統一備份方案應運而生,旨在提供這一領域的備份解決方案。基於 Velero (https://velero.io/) ,Kurator 為使用者提供了一鍵式的操作體驗,可以自定義備份並恢復橫跨多個叢集的應用與資源。透過 Kurator 提供的統一檢視功能,使用者能夠實時監控各個叢集備份的狀態和進度。其覆蓋範圍涵蓋了從 Pod、Deployment、Service 等 Kubernetes 原生資源,到 PersistentVolumes(PVs)等持久化儲存的備份和恢復,以滿足現代企業多元化的資料保護需求。
統一備份
Kurator 在備份解決方案上提供了多樣化的選擇,以適應不同場景下的資料保護需求。其靈活性確保了不同業務場景下都能找到合適的備份策略。
- 即時備份: 面對資料頻繁變動的情形,“即時備份”能夠迅速地提供保護,確保關鍵資料在關鍵時間點的完整性得以保持。
- 定期備份:對於那些不太頻繁變動,但同樣需要確保永續性的資料,“定期備份”可以根據預設的時間週期性的自動執行備份,以滿足合規性要求和保障資料安全。
此外,Kurator 還提供了一系列高度定製化的備份選項。例如,“特定叢集備份”允許運維團隊基於策略或特定需求有選擇性地備份特定叢集。“資源過濾”功能則提供了細粒度的控制,使管理員能夠根據資源的名稱、名稱空間或標籤等屬性來精確定義備份的範圍。
這些備份策略的多樣性和自動化能力為使用者在不斷變化的業務需求中,提供了穩定和可靠的資料保護。
接下來是一個統一備份的實際操作示例:
apiVersion: backup.kurator.dev/v1alpha1 kind: Backup metadata: ... name: select-labels namespace: default spec: destination: fleet: quickstart policy: resourceFilter: labelSelector: matchLabels: app: busybox ttl: 720h status: backupDetails: - backupNameInCluster: kurator-member1-backup-default-select-labels backupStatusInCluster: completionTimestamp: "2023-10-28T03:37:13Z" expiration: "2023-11-27T03:37:07Z" formatVersion: 1.1.0 phase: Completed progress: itemsBackedUp: 1 totalItems: 1 startTimestamp: "2023-10-28T03:37:07Z" version: 1 clusterKind: AttachedCluster clusterName: kurator-member1 - backupNameInCluster: kurator-member2-backup-default-select-labels backupStatusInCluster: completionTimestamp: "2023-10-28T03:37:13Z" expiration: "2023-11-27T03:37:07Z" formatVersion: 1.1.0 phase: Completed progress: {} startTimestamp: "2023-10-28T03:37:07Z" version: 1 clusterKind: AttachedCluster clusterName: kurator-member2 ...
觀察 spec 配置,可以看到備份的目標是位於 Fleet 中各叢集內所有標有 app:busybox 標籤的資源。透過在 spec 中配置策略的方式,可以確保相關的資源得到備份。在 status 中,可以實時追蹤到備份任務在每個叢集,如 kurator-member1 和 kurator-member2,的執行狀況,保持了操作的透明度。
? 更多的示例和細節,請參考: https://kurator.dev/docs/fleet-manager/backup/backup/
統一恢復
基於統一備份產生的備份資料,Kurator 透過統一恢復功能支援跨叢集的應用和資源恢復。
- 針對即時備份恢復:依據“即時備份”建立的備份資料,可以快速恢復至指定關鍵時刻的狀態。
- 針對定期備份恢復: 針對“定期備份”,Kurator 支援將備份資料恢復到最近一次成功執行備份的時間點。
類似備份功能,Kurator 在恢復方面也提供了多樣化和定製化的選項。例如,“特定叢集恢復”使得使用者能夠只將資料恢復到指定叢集,而不必覆蓋所有備份中包含的叢集。“資源過濾”功能則允許使用者對備份資料進行進一步篩選,只選擇性地恢復需要的資料項。使用者可以根據備份名稱、名稱空間或標籤等屬性來定義恢復的範圍,這不僅提升了恢復過程的靈活性,也確保了高度的精確性。
參閱以下操作示例,瞭解如何使用 Kurator 進行統一恢復:
apiVersion: backup.kurator.dev/v1alpha1 kind: Restore metadata: ... name: minimal namespace: default spec: backupName: select-labels status: restoreDetails: - clusterKind: AttachedCluster clusterName: kurator-member1 restoreNameInCluster: kurator-member1-restore-default-minimal restoreStatusInCluster: completionTimestamp: "2023-10-28T09:24:07Z" phase: Completed progress: itemsRestored: 2 totalItems: 2 startTimestamp: "2023-10-28T09:24:05Z" - clusterKind: AttachedCluster clusterName: kurator-member2 restoreNameInCluster: kurator-member2-restore-default-minimal restoreStatusInCluster: completionTimestamp: "2023-10-28T09:24:07Z" phase: Completed progress: itemsRestored: 2 totalItems: 2 startTimestamp: "2023-10-28T09:24:05Z" ...
透過檢查恢復任務的 spec 配置,我們可以確定本次恢復操作是針對前文提到的、標記為 select-labels 的備份資料。這裡使用了最低配置,不進行恢復的篩選,直接根據備份的配置進行恢復。在 status 中,同樣可以實時追蹤到恢復任務在每個叢集的執行狀況。
? 更多的示例和細節,請參考: https://kurator.dev/docs/fleet-manager/backup/restore/
統一遷移
統一遷移旨在簡化將應用程式及其資源從一個叢集遷移到其他多個叢集的過程。使用者需要定義一種 migrate 型別的資源配置,並指定源叢集、目標叢集及相關策略。此外,類似於 Kurator 的統一備份和恢復功能,使用者同樣可以進行豐富的定製化配置。
配置完成之後,Kurator 相應的控制器便會自動啟動遷移任務。這一系列任務包括將資源從源叢集上傳到物件儲存,以及最終遷移到指定的目標叢集。具體的遷移過程可參考以下示意圖:
Kurator 統一遷移流程圖
相較於使用 Velero,Kurator 提供了一個更為整合和清晰的遷移流程描述。所有必要的配置細節都集中在單一的 migrate 物件中,從而減少了隨著目標叢集數量增加而產生的配置負擔。同時,Kurator自動管理從建立備份到完成遷移的全過程,簡化了操作流程,降低了手動操作錯誤的風險。此外,使用者還可以透過這一個物件來實時監控多個叢集中的遷移進度,隨時瞭解遷移的最新狀態,確保整個流程按預期執行。
接下來是一個統一遷移的實際操作示例:
apiVersion: backup.kurator.dev/v1alpha1 kind: Migrate metadata: ... name: select-labels namespace: default spec: policy: resourceFilter: labelSelector: matchLabels: app: busybox sourceCluster: clusters: - kind: AttachedCluster name: kurator-member1 fleet: quickstart targetCluster: clusters: - kind: AttachedCluster name: kurator-member2 fleet: quickstart status: conditions: - lastTransitionTime: "2023-10-28T15:55:23Z" status: "True" type: sourceReady phase: Completed sourceClusterStatus: backupNameInCluster: kurator-member1-migrate-default-select-labels backupStatusInCluster: completionTimestamp: "2023-10-28T15:55:18Z" expiration: "2023-11-27T15:55:13Z" formatVersion: 1.1.0 phase: Completed progress: {} startTimestamp: "2023-10-28T15:55:13Z" version: 1 clusterKind: AttachedCluster clusterName: kurator-member1 targetClusterStatus: - clusterKind: AttachedCluster clusterName: kurator-member2 restoreNameInCluster: kurator-member2-migrate-default-select-labels restoreStatusInCluster: completionTimestamp: "2023-10-28T15:56:00Z" phase: Completed startTimestamp: "2023-10-28T15:55:58Z" ...
在 spec 配置中,源叢集設定為 kurator-member1,目標叢集為 kurator-member2,遷移過程僅針對包含標籤 app:busybox 的資源。在 status 中,遷移階段 Phase 顯示為 Completed,表明遷移操作已完成。sourceClusterStatus 和 targetClusterStatus 分別提供源叢集資源的備份細節和目標叢集資源的恢復情況。
? 更多的細節,請參考: https://kurator.dev/docs/fleet-manager/backup/migrate/
統一分散式儲存
分散式儲存作為現代雲原生架構中不可或缺的一部分,提供了資料的可擴充套件性和可靠性。然而,在不同叢集間實現一個一致的分散式儲存解決方案,往往涉及到複雜的配置和管理工作。
Kurator 致力於簡化分散式儲存的部署與管理。基於領先的開源專案 Rook(https://rook.io/),Kurator 支援在多叢集環境中輕鬆自動化管理分散式儲存。這包括塊儲存、檔案系統儲存和物件儲存等多種儲存型別,以適應各種應用場景的需求。
利用 Fleet 外掛,Kurator 提供了一種一鍵跨叢集部署分散式儲存的解決方案,既簡化了配置步驟也顯著降低了配置錯誤的可能性。架構如下圖所示:
Kurator統一分散式儲存架構圖
接下來是一個透過 Fleet 外掛部署多叢集分散式儲存的例子:
apiVersion: fleet.kurator.dev/v1alpha1 kind: Fleet metadata: name: quickstart namespace: default spec: clusters: - name: kurator-member1 kind: AttachedCluster - name: kurator-member2 kind: AttachedCluster plugin: distributedStorage: storage: dataDirHostPath: /var/lib/rook monitor: count: 3 labels: role: MonitorNodeLabel manager: count: 2 labels: role: ManagerNodeLabel
在 spec 中,clusters 指明瞭儲存將部署在哪些叢集上。在 status 中,plugin 配置下的 distributedStorage 標識此為一個分散式儲存外掛的安裝。此外,dataDirHostPath 定義了儲存的路徑,而 monitor 和 manager 配置項則指定了 Ceph 元件的引數。
? 更多的示例和細節,請參考: https://kurator.dev/docs/fleet-manager/distributedstorage-plugin/
參考連結
統一備份恢復遷移特性介紹: https://kurator.dev/docs/fleet-manager/backup/
Fleet備份外掛安裝: https://kurator.dev/docs/fleet-manager/backup/backup-plugin/
統一備份操作指南: https://kurator.dev/docs/fleet-manager/backup/backup/
統一恢復操作指南: https://kurator.dev/docs/fleet-manager/backup/restore/
統一遷移操作指南: https://kurator.dev/docs/fleet-manager/backup/migrate/
統一分散式儲存操作指南: https://kurator.dev/docs/fleet-manager/distributedstorage-plugin/
附:Kurator社群交流地址
GitHub地址:
Kurator主頁:https://kurator.dev/
Slack地址: https://join.slack.com/t/kurator-hq/shared_invite/zt-1sowqzfnl-Vu1AhxgAjSr1XnaFoogq0A