8 個用於 Kubernetes 持久化儲存的 CNCF 專案

danny_2018發表於2022-04-29

在容器化方面,資料的持久化儲存是個難題。臨時容器是一個短暫的計算環境,其中程式碼不會永遠儲存。但是您仍然需要將資料儲存在某個物理磁碟上!

容器的高度可變性與有狀態儲存的需求不一致,這是一個引入了無數解決方法的難題。針對 Kubernetes 中有狀態的服務 ,通常必須依靠外部工具和資料庫來儲存和傳輸這些資料。

CNCF 擁有廣泛的與 Kubernetes 整合的持久資料儲存工具,以幫助管理使用持久儲存卷的管理任務。下面,我們將回顧 CNCF 託管的其中一些工具。這些軟體包的範圍從提供雲原生儲存、在客戶端應用程式和儲存之間提供標準介面以及提供資料備份和恢復選項。

1. Rook

Kubernetes 的儲存編排

持久儲存系統需要大量維護以維持運營。Rook 是 Kubernetes 的開源雲原生儲存實用程式,旨在自動化儲存管理員的一些任務,例如程式化儲存、遷移、災難恢復、監控和資源管理。Rook 支援檔案、塊和物件儲存型別。

Rook 實際上利用了 Kubernetes 的架構,使用了 K8s Operator。截至 2022 年,CNCF 畢業專案 Rook 支援三個儲存提供商:Ceph[1]、Cassandra[2] 和 NFS[3]。可以在此處檢視 Rook論壇[4]以瞭解專案的最新資訊並提出問題。

2. Longhorn

基於 Kubernetes 構建的雲原生分散式儲存

Longhorn 是 Kubernetes 分散式塊儲存的開源工具。使用 Longhorn,您可以為 Kubernetes 叢集複製儲存,並利用持久卷的內建增量備份。您可以使這些快照重複出現並將它們備份到輔助物件儲存。這是透過“將大型塊儲存控制器劃分為多個較小的儲存控制器”來實現的,從而有助於緩解與各種基於容器的微服務的儲存相關的問題。

Longhorn 還與非雲託管的 K8s 叢集相容,並具有可免費使用的圖形管理 UI。與 Rook 類似,它是 Kubernetes 原生的。Longhorn 最初由 Rancher 開發,現在是 CNCF 內的一個 孵化專案[5]。

3.CubeFS

雲原生分散式檔案系統和物件儲存。

CubeFS,原名 ChubaoFS,是一個分散式檔案系統,旨在支援大規模的雲原生架構。研究發現,與 Ceph 相比,CFS 的速度大約快三倍。CubeFS 的功能是讓容器叢集中託管的客戶端應用程式與後設資料子系統和資料子系統通訊的卷對話。這些卷可以部署到各種容器中,以實現許多不同客戶端之間的檔案共享。

CubeFS 的高階底層後設資料子系統本身是分散式的,以提高效能和可擴充套件性。CubeFS 可用作多租戶訪問的通用儲存引擎或確保同一檔案副本的一致性。正如文件[6]所述,像 CubeFS 這樣的分散式檔案系統尤其有助於建立機器學習模型。目前,CubeFS 是 CNCF 中的一個孵化專案。

4.K8up

Kubernetes 和 OpenShift 備份 operator

K8up 被其建立者親切地稱為“番茄醬”,是用於執行備份的 Kubernetes operator。K8up 可透過 Helm Chart 方便地分發,易於為特定的雲原生備份用例部署和定製。K8up 可用於自動備份任何標記為ReadWriteMany或帶有自定義標籤的持久卷宣告 (PVC)。您還可以使用 K8up 啟動按需備份、安排例行備份、安排長期存檔以及檢視和管理備份。K8up 可與 S3 相容的儲存一起使用。目前,K8up 是 CNCF 的沙盒專案。

5.OpenEBS

開源 container-attached 儲存(CAS)

OpenEBS 是另一個開源專案,旨在幫助簡化使用雲原生基礎架構維護有狀態工作負載的過程。藉助 OpenEBS,開發人員可以使用熟悉的 K8s 命令和 API 來控制特定容器的工作負載儲存。儲存軟體本身由 Kubernetes 容器化和編排。該專案將此設定稱為容器附加儲存 (CAS)。OpenEBS 最初由 MayaData 建立和贊助,目前,是 CNCF 的一個沙盒專案。

6. ORAS

OCI registry-as-storage

您可能熟悉Open Container Initiative[7] (OCI),該組織為容器設定行業標準格式。一種這樣的格式是分發規範[8],它定義了儲存、處理和拉取容器映象的標準方法。

開發人員也開始使用 OCI 登錄檔來儲存非容器型別。因此,OCI 工件[9]建立來定義這些任意儲存型別。最後,OCI registry-as-storage (ORAS) 是一個實用程式,專門幫助從 OCI 註冊中心推送和拉取這些通用 OCI 工件。迄今為止,幾乎沒有實施 ORAS。該文件僅引用 Singularity 和 Helm 專案作為當前實現。ORAS 是 CNCF 的沙盒專案。

7. Piraeus Datastore

Kubernetes 的高可用資料儲存

Piraeus 是一個開源雲原生儲存系統,旨在與 Kubernetes 本地持久卷一起使用。該實用程式提供動態配置、資源管理和高可用性等功能,為有狀態工作負載啟用故障轉移過程。與此列表中的其他專案相比,Piraeus 非常易於使用,並且開始只需要幾個命令。如果您的專案僅使用本地儲存,Piraeus 是一個不錯的選擇。目前,Piraeus 是 CNCF 的沙盒專案。

8. Vineyard

記憶體中不可變的資料管理器

與本文的其他專案不同,Vineyard (v6d) 的獨特之處在於它專注於記憶體資料儲存。Vineyard 適用於大型資料系統,因為它使用零複製資料共享來減少冗餘處理。它提供了一種抽象的方式來處理可能利用圖形資料庫的多個計算框架。目前,Vineyard 是一個沙盒 CNCF 專案。

總結

要在 Kubernetes 中實現 持久儲存[10],必須定義一個持久卷[11],其中有許多StorageClasses[12]用於各種儲存型別。例如,您使用本地儲存並可以指向執行 Kubernetes 的主機上的特定資料夾,但這並不總是最佳實踐,因為您經常需要跨節點共享儲存。執行 NFS 伺服器是一種選擇,但大多數用例都希望將雲端儲存作為持久卷。

無論他們使用何種基礎架構,工程師和 ITOps 都需要輕鬆訪問以儲存和檢索資料。為了獲得雲原生生態系統的全部優勢,將儲存與終端節點解耦並在整個容器生態系統中進行智慧編排非常重要。正如我們在上面看到的,CNCF 中有許多專案試圖簡化將 Kubernetes 與持久的、有狀態的儲存結合起來的過程。

來自 “ 進擊雲原生 ”, 原文作者:進擊雲原生;原文連結:https://mp.weixin.qq.com/s/KwULZZpPqBn0rPQE1K2G7A,如有侵權,請聯絡管理員刪除。

相關文章