共用方式為


Kubernetes 叢集的儲存體選項

本文比較 Amazon Elastic Kubernetes Service (Amazon EKS) 和 Azure Kubernetes Service (AKS) 的儲存體功能,並說明在 AKS 上儲存工作負載資料的選項。

注意

本文是一系列文章的一部分,有助於熟悉 Amazon EKS 的專業人員了解 Azure Kubernetes Service (AKS)

Amazon EKS 儲存體選項

在 Amazon EKS 中,自 Kubernetes 版本 1.11 之後,叢集會為永續性磁碟區宣告使用一個名為 gp2 的預設 StorageClass。 系統管理員可以新增驅動程式來定義更多儲存體類別,例如:

  • 作為 Amazon EKS 附加元件的 Amazon EBS CSI 驅動程式
  • Amazon EBS CSI 自我管理附加元件
  • Amazon EFS CSI 驅動程式
  • Amazon FSx for Lustre CSI 驅動程式
  • Amazon FSx for NetApp ONTAP CSI 驅動程式

藉由新增驅動程式和儲存體類別,您可以使用儲存體服務,例如:

  • Amazon Elastic Block Store (Amazon EBS),這是與 Amazon Elastic Compute Cloud (EC2) 執行個體搭配使用的區塊層級儲存體解決方案,用來儲存永續性資料。 此服務類似於 Azure 磁碟儲存體,它會根據所需的效能提供數個 SKU,例如標準 SSD、進階 SSD 或 Ultra 磁碟儲存體。

  • Amazon Elastic File System (Amazon EFS),提供網路檔案系統存取可跨執行個體共用的外部檔案系統。 對等的 Azure 解決方案是搭配伺服器訊息區塊 (SMB) 3.0 和 NFS 存取的 Azure 檔案儲存體和 Azure 進階檔案儲存體。

  • Lustre 是一種開放原始碼檔案系統,通常用於高效能運算 (HPC)。 在 Azure 中,您可以將 Ultra 磁碟儲存體或 Azure HPC Cache 用於重視速度的工作負載,例如機器學習和 HPC。

  • NetApp ONTAP,Amazon Web Services (AWS) 中完全受控的 ONTAP 共用儲存體。 Azure NetApp Files 是 Azure 中以 NetApp 技術為基礎的類似檔案儲存體服務。

AKS 儲存選項

根據預設,每個 AKS 叢集都包含下列預先建立的儲存體類別

  • 預設儲存體類別,managed-csi,使用磁碟儲存體標準 SSD。 標準 SSD 是符合成本效益的儲存體選項,已針對在較低每秒的輸入/輸出作業 (IOPS) 上需要一致效能的工作負載進行最佳化。
  • managed-csi-premium 類別使用磁碟儲存體進階 SSD 受控磁碟。
  • azurefile-csi 類別會使用 Azure 檔案儲存體,使用 SMB 或 NFS,為相同的儲存體磁碟區提供並行共用存取權。
  • azurefile-csi-premium 類別會針對具有 IOPS 密集工作負載的檔案共用使用 Azure 進階檔案儲存體。 Azure 進階檔案儲存體提供 SSD 儲存體支援的低延遲和高輸送量。

您可以新增其他儲存體類別來擴充這些選項,並與其他可用的儲存體解決方案整合,例如:

  • Ultra 磁碟儲存體
  • Azure NetApp Files
  • HPC Cache
  • NFS 伺服器
  • 第三方儲存體解決方案

Azure 磁碟儲存體

根據預設,AKS 叢集隨附使用磁碟儲存體的預先建立 managed-csimanaged-csi-premium 儲存體類別。 與 Amazon EBS 類似,這些類別會建立受控磁碟或連結至節點以進行 Pod 存取的區塊裝置。

磁碟類別同時允許靜態動態磁碟區佈建。 回收原則可確保磁碟是使用永續性磁碟區刪除的。 您可以編輯永續性磁碟區宣告來擴充磁碟。

這些儲存體類別會使用 Azure 受控磁碟搭配本地備援儲存體 (LRS)。 LRS 表示資料在 Azure 主要區域的單一實體位置內具有三個同步複本。 LRS 是成本最低的複寫選項,但無法防止資料中心失敗。 若要降低此風險,請使用可使用內建快照集技術之 VeleroAzure 備份等解決方案,定期備份或建立磁碟儲存體資料的快照集。

這兩個儲存體類別都受到受控磁碟的支援,而且都使用固態硬碟 (SSD) 磁碟機。 請務必了解標準與進階磁碟之間的差異:

  • 標準磁碟會根據大小和儲存體交易來定價。
  • 進階磁碟只會依大小收費,這可讓需要大量交易的工作負載更便宜。
  • 進階 SSD 具有更高的最大輸送量和 IOPS,如此比較中所示
  • 針對大多數生產和開發工作負載,建議使用進階儲存體。

如果您使用 Azure 受控磁碟作為主要儲存體類別,請考慮您為 Kubernetes 叢集選擇的虛擬機器 (VM) SKU。 Azure VM 會限制您可以連結的磁碟數目,而該限制會隨著 VM 大小而不同。 此外,由於 Azure 磁碟會掛接為 ReadWriteOnce,因此只能用於單一 Pod。

Azure 進階 SSD v2 磁碟

Azure 進階 SSD v2 磁碟提供 IO 密集的企業工作負載、一致的子磁碟延遲,以及高 IOPS 和輸送量。 進階 SSD v2 磁碟的效能 (容量、輸送量和 IOPS) 可隨時單獨設定,因此在更多情況下都能更輕易地符合成本效益,同時達到效能需求。 如需如何設定新的或現有的 AKS 叢集以使用 Azure 進階 SSD v2 磁碟的詳細資訊,請參閱在 Azure Kubernetes Service 上使用 Azure 進階 SSD v2 磁碟

Ultra 磁碟儲存體

Ultra 磁碟儲存體是 Azure 受控磁碟層,可為 Azure VM 提供高輸送量、高 IOPS 和一致的低延遲磁碟儲存體。 Ultra 磁碟儲存體適用於資料和交易繁重的工作負載。 與其他磁碟儲存體 SKU 和 Amazon EBS 一樣,Ultra 磁碟儲存體會一次掛接一個 Pod,而且不提供並行存取。

使用旗標 --enable-ultra-ssdAKS 叢集上啟用 Ultra 磁碟儲存體

如果您選擇 Ultra 磁碟儲存體,請注意其限制,並確定選取相容的 VM 大小。 Ultra 磁碟儲存體可與本地備援儲存體 (LRS) 複寫搭配使用。

自攜式金鑰 (BYOK)

Azure 會靜態加密受控磁碟中的所有資料。 根據預設,資料是以使用 Microsoft 管理的金鑰加密。 若要進一步控制加密金鑰,您可以提供客戶自控金鑰,以用於 AKS 叢集中 OS 和資料磁碟的待用加密。 有關詳細資訊,請參閱在 Azure Kubernetes 服務 (AKS) 中使用 Azure 受控磁碟自攜式金鑰 (BYOK)

Azure 檔案

磁碟儲存體無法提供磁碟區的並行存取權,但您可以使用 Azure 檔案儲存體透過 SMB 通訊協定進行連接,然後掛接 Azure 儲存體支援的共用磁碟區。 此程序提供類似於 Amazon EFS 的網路連接儲存體。 與磁碟儲存體一樣,提供兩種選項:

  • Azure 檔案儲存體標準儲存體由一般硬碟 (HDD) 支援。
  • Azure 檔案儲存體進階儲存體會使用高效能 SSD 磁碟機來備份檔案共用。 進階儲存體的最小檔案共用大小為 100 GB。

Azure 檔案儲存體具有下列儲存體帳戶複寫選項,以在失敗時保護您的資料:

若要將 Azure 檔案儲存體的成本最佳化,請購買 Azure 檔案儲存體容量保留

Azure 容器儲存體

Azure 容器儲存體是雲端式磁碟區管理、部署和協調流程服務,專為容器原生建置。 它與 Kubernetes 整合,可讓您動態且自動佈建永續性磁碟區,以儲存 Kubernetes 叢集上執行之具狀態應用程式的資料。

Azure 容器儲存體會針對實際資料記憶體利用現有的 Azure 記憶體供應專案,並提供專為容器所建置的磁碟區協調流程和管理解決方案。 支援的備份儲存體選項包括:

  • Azure 磁碟:對儲存體 SKU 和組態的細微控制。 它們適用於第 1 層和一般用途資料庫。
  • 暫時性磁碟:利用 AKS 節點上的本機儲存資源 (NVMe 或暫存 SSD)。 最適合不需要資料持久性或內建資料複寫支援的應用程式。 AKS 會探索 AKS 節點上可用的暫時性記憶體,並取得它們以進行磁碟區部署。
  • Azure Elastic SAN:依需求佈建,完全受控資源。 適用於一般用途資料庫、串流和傳訊服務、CD/CI 環境以及其他第 1 層/第 2 層工作負載。 多個叢集可以同時存取單一 SAN,不過永續性磁碟區一次只能由一個取用者連結。

到目前為止,為容器提供雲端儲存體需要使用單個容器儲存體介面 (CSI) 驅動程式,以使用適用於以基礎設施即服務 (IaaS) 為中心的工作負載的儲存體服務,並使其適用於容器。 這會建立作業額外負荷,並增加應用程式可用性、延展性、效能、可用性和成本的問題風險。

Azure 容器儲存體衍生自 OpenEBS,這是提供 Kube 容器記憶體功能的開放原始碼解決方案。 透過 Kube 環境中的微服務型記憶體控制器提供受控磁碟區協調流程解決方案,Azure 容器儲存體會啟用真正的容器原生記憶體。

Azure 容器儲存體適用於下列案例:

  • 加速 VM 對容器計劃: Azure 容器儲存體會顯示先前僅適用於 VM 且可供容器使用的 Azure 區塊儲存體供應專案的完整範圍。 這包括暫時性磁碟,可為 Cassandra 等工作負載提供極低的延遲,以及提供原生 iSCSI 和共用佈建目標的 Azure 彈性 SAN。

  • 簡化 Kube 的磁碟區管理: 透過 Kube 控制平面提供磁碟區協調流程,Azure 容器儲存體可讓您輕鬆地在 Kube 內部署和管理磁碟區,而不需要在不同的控制平面之間來回移動。

  • 降低總擁有成本 (TCO): 藉由增加每個 Pod 或節點支援的永續性磁碟區規模來提升成本效益。 藉由動態共用儲存體資源來減少佈建所需的儲存體資源。 請注意,不支持儲存體集區本身的相應擴大支援。

Azure 容器儲存體的主要優點如下:

  • 快速擴增具狀態 Pod: Azure 容器儲存體會透過網路區塊儲存體通訊協定 (NVMe-oF 或 iSCSI) 裝載永續性磁碟區,提供持續性磁碟區的快速連結和中斷連結。 您可以視需要一點點開始部署資源,同時確定應用程式不會在初始化期間或實際執行環境中耗盡或中斷。 應用程式復原功能已透過 Pod 重新產生整個叢集來改善,需要快速移動永續性磁碟區。 Azure 容器儲存體使用遠端網路通訊協定與 Pod 生命週期緊密耦合,以支援 AKS 上具有高度彈性的大規模具狀態應用程式。

  • 改善具狀態工作負載的效能: Azure 容器儲存體可提升讀取效能,並使用 NVMe-oF over RDMA 提供近乎磁碟寫入效能。 這可讓客戶符合各種容器工作負載的效能需求,包括第 1 層 I/O 密集、一般用途、輸送量敏感性和開發/測試。 加速永續性磁碟區的連結/中斷連結時間,並將 Pod 容錯移轉時間降到最低。

  • Kube 原生磁碟區協調流程: 建立存放集區和永續性磁碟區、擷取快照集,以及使用 kubectl 命令來管理磁碟區的整個生命週期,而不需在不同控制平面作業的工具組之間切換。

Azure NetApp Files

和 AWS NetApp ONTAP 一樣,Azure NetApp Files 服務是企業級高效能測量檔案儲存體服務。 Azure NetApp Files 使用 NetApp 解決方案在 Azure 中完全受控。 如同 Azure 檔案儲存體,Azure NetApp Files 可讓多個 Pod 掛接磁碟區。 您可以使用 Astra Trident (適用於 Kubernetes 的開放原始碼動態儲存體協調器) 將 AKS 叢集設定為使用 Azure NetApp Files

請注意 Azure NetApp Files 的資源限制。 Azure NetApp Files 的容量集區大小下限為 4 TiB。 Azure NetApp Files 會依佈建的大小而不是使用的容量收費。

Azure HPC Cache

Azure HPC Cache 會加快對 HPC 工作資料的存取速度,並具備雲端解決方案的所有可擴縮性。 如果您選擇此儲存體解決方案,請務必將 AKS 叢集部署在支援 Azure HPC 快取的區域

NFS 伺服器

共用 NFS 存取的最佳選項是使用 Azure 檔案儲存體或 Azure NetApp Files。 您也可以在匯出磁碟區的 Azure VM 上建立 NFS 伺服器

請注意,此選項僅支援靜態佈建。 您必須在伺服器上手動佈建 NFS 共用,且無法自動從 AKS 進行。

此解決方案是以基礎結構即服務 (IaaS) 而不是平台即服務 (PaaS) 為基礎。 您負責管理 NFS 伺服器,包括 OS 更新、高可用性、備份、災害復原和可擴縮性。

暫時 OS 磁碟

根據預設,Azure 會自動將虛擬機器的 OS 磁碟複寫至 Azure 儲存體,以避免 VM 在遷往另一部主機時遺失資料。 不過,由於容器不是設計來保存本機狀態,因此,此行為提供的價值有限,同時還會有一些缺點。 這些缺點包括但不限於節點佈建較慢及更高的讀取/寫入延遲。

相較之下,暫時性 OS 磁碟只會儲存在主機電腦上,就像暫存磁碟一樣。 藉由此設定,您可以取得更低的讀取/寫入延遲,以及更快的節點縮放和叢集升級。

注意

當您未明確要求適用於 OS 的 Azure 受控磁碟 (部分機器翻譯) 時,如果指定的節點集區設定可能的話,AKS 就會預設為暫時性 OS。

如需詳細資訊,請參閱

協力廠商解決方案

如同 Amazon EKS,AKS 是 Kubernetes 實作,您可以整合第三方 Kubernetes 儲存體解決方案。 以下是 Kubernetes 的第三方儲存體解決方案範例:

  • Rook 透過自動化儲存體管理員工作,將分散式儲存體系統轉變為自我管理儲存體服務。 Rook 會透過每個儲存體提供者的 Kubernetes 操作員來提供服務。
  • GlusterFS 是一種免費且具開放原始碼的可擴縮網路檔案系統,它會使用一般現成的硬體來建立大型分散式儲存體解決方案,以用於資料繁重且需要大量頻寬的工作。
  • Ceph 透過由商用硬體元件建置的單一叢集提供物件、區塊和檔案介面,提供可靠且可擴縮的統一儲存體服務。
  • MinIO 多重雲端物件儲存體,可讓企業在任何雲端上建置 AWS S3 相容的資料基礎結構,為資料和應用程式提供一致的可攜式介面。
  • Portworx 是 Kubernetes 專案和容器型計劃的端對端儲存體和資料管理解決方案。 Portworx 提供容器細微的儲存體、災害復原、資料安全性和多重雲端移轉。
  • Quobyte 提供高效能的檔案和物件儲存體,您可以在任何伺服器或雲端上部署,以擴縮效能、管理大量資料,以及簡化管理。
  • Ondat 可在任何平台上提供一致的儲存體層。 您可以在 Kubernetes 環境中執行資料庫或任何永續性工作負載,而不需要管理儲存體層。

Kubernetes 儲存體考量

當您選擇 Amazon EKS 或 AKS 的儲存體解決方案時,請考量下列因素。

儲存體類別存取模式

在 Kubernetes 1.21 版和更新版本中,AKS 和 Amazon EKS 儲存體類別預設只會使用容器儲存體介面 (CSI) 驅動程式

不同的服務支援具有不同存取模式的儲存體類別。

服務 ReadWriteOnce ReadOnlyMany ReadWriteMany
Azure 磁碟 X
Azure 檔案 X X X
Azure NetApp Files X X X
NFS 伺服器 X X X
Azure HPC Cache X X X

動態與靜態佈建

動態佈建磁碟區以減少靜態建立永續性磁碟區的管理額外負荷。 設定正確的回收原則,以避免在刪除 Pod 時有未使用的磁碟。

Backup

選擇要備份永續性資料的工具。 此工具應符合您的儲存體類型,例如快照集、Azure 備份VeleroKasten

成本最佳化

若要最佳化 Azure 儲存體成本,請使用 Azure 保留。 請務必檢查哪些服務支援 Azure 保留。 另請參閱 Kubernetes 叢集的成本管理

參與者

本文由 Microsoft 維護。 原始投稿人如下。

主要作者:

其他投稿人:

若要查看非公開的 LinkedIn 設定檔,請登入 LinkedIn。

下一步