全部產品
Search
文件中心

Container Service for Kubernetes:儲存概述

更新時間:Mar 01, 2026

Kubernetes應用通常需要持久化儲存來儲存資料。ACK通過標準的容器儲存介面CSI,整合了多種阿里雲儲存服務(如雲端硬碟、OSS、NAS、CPFS等),併兼容Kubernetes原生儲存機制,為不同業務情境提供儲存解決方案。

儲存方案選型

ACK的儲存方案分為兩類:

  • Kubernetes原生儲存卷:用於臨時資料、組態管理或與節點的互動。生命週期通常與Pod綁定,不適用於需要持久化儲存應用資料的情境。

  • 阿里雲持久化儲存卷:通過CSI組件整合,為工作負載提供穩定、可靠的資料持久化能力。生命週期獨立於Pod,可用於有狀態應用。

image
使用容器儲存功能前,確保已瞭解相關概念,如儲存卷、PV、PVC等,詳見儲存基礎知識

Kubernetes 原生儲存卷

Kubernetes原生儲存卷的生命週期通常與Pod綁定,不適用於需要持久化儲存應用資料的情境。

類型

說明

核心特點

emptyDir

與Pod生命週期相同的臨時空目錄。

Pod刪除後資料即丟失。可用於Pod內容器間資料交換或臨時緩衝。

HostPath

將節點宿主機上的檔案或目錄掛載到Pod中。可通過 type 欄位(如 DirectoryOrCreate)控制掛載前的檢查和建立行為。

詳見HostPath資料卷

資料與節點綁定,不隨Pod遷移。不適用於需要高可用和持久化儲存的有狀態應用(如資料庫、緩衝)。

ConfigMap/Secret

以檔案形式掛載配置項或敏感憑據。

僅用於儲存小體積配置資料,非業務資料。用於將配置與應用解耦。

阿里雲持久化儲存卷

對於需要持久化儲存資料的有狀態應用,應選擇由阿里雲儲存服務提供的持久化儲存卷。這些儲存卷的生命週期獨立於Pod,通過CSI實現與Kubernetes的整合。

方案對比

為便於快速選型,表格中各儲存方案的標題下方提供了部分核心屬性的快速索引。以雲端硬碟為例:

  • image雲端硬碟:方案詳細說明。單擊可查看詳情。

  • 靜態/動態:方案支援的儲存卷掛載方式,包括靜態儲存卷(PV/PVC)和動態儲存裝置卷(StorageClass/PVC)。單擊可查看具體操作文檔。

  • RWO:方案支援的儲存卷訪問模式accessModes),包括RWO(ReadWriteOnce)、RWX(ReadWriteMany)、ROX(ReadOnlyMany)。

  • 計費:方案計費說明。單擊可查看詳情。

儲存方案

說明

權衡與限制

image雲端硬碟

靜態/動態 | RWO(未啟用多重掛載) | 計費

  • 說明:提供高資料可靠性(9個9)和穩定I/O效能的Block Storage服務,資料在後端採用三副本機制。支援檔案系統(volumeMode: Filesystem)及塊裝置模式(volumeMode: Block),並提供多種效能規格(ESSD AutoPL、ESSD雲端硬碟、ESSD Entry等)和靜態加密能力。

  • 情境:適用於資料庫(MySQL/PostgreSQL)、中介軟體(Redis/ES)等對I/O效能和資料可靠性要求高的單一實例有狀態應用。

  • accessModes限制:未開啟多重掛載的雲端硬碟同一時間只能被單個Pod掛載,無法原生滿足多執行個體共用資料的業務需求(如Web叢集內容共用)。

    推薦用於StatefulSet或單Pod,不推薦用於多副本Deployment,詳見操作文檔。
  • 可用性區域綁定:除ESSD同城冗餘雲端硬碟外,其他雲端硬碟類型只能掛載到同一可用性區域下的Pod。

    建議使用WaitForFirstConsumer模式的StorageClass,實現拓撲感知調度。
  • 規格匹配:雲端硬碟類型與ECS執行個體規格存在匹配關係,詳見執行個體規格類型系列

imageNAS

靜態/動態 | RWX、RWO、ROX | 計費

  • 說明:支援NFS協議的共用檔案儲存體,支援多Pod並發讀寫,容量與效能可Auto Scaling。提供資源回收筒、快照、備份等資料保護能力。

  • 情境:Web叢集內容共用、CI/CD流水線、日誌集中儲存、以及其他需要多應用執行個體並發讀寫同一份資料的情境。

  • 網路I/O開銷:讀寫均通過網路進行,相比雲端硬碟會引入額外的毫秒級延遲,不推薦用於資料庫等對I/O延遲極其敏感的應用。

  • “鄰居雜訊”:在subpath和 sharepath 的共用執行個體模式下,動態供應的PV是後端同一個NAS的子目錄,共用效能(頻寬、IOPS)可能引發“鄰居雜訊”。

  • 協議與網路限制:僅支援NFS協議,且不支援跨VPC掛載。

imageOSS

靜態ossfs 1.0/ossfs 2.0

動態ossfs 1.0/ossfs 2.0

RWX、ROX | 計費

  • 說明:海量、低成本的Object Storage Service服務。通過ossfs工具可將Bucket類比成檔案系統掛載到Pod中,單位儲存成本低。提供ossfs 1.0(注重POSIX相容性)和ossfs 2.0(為高吞吐、大並發情境最佳化)兩種掛載方式。

  • 情境:AI/巨量資料分析的資料湖、網站圖片/視頻等靜態媒體資源儲存、應用資料備份與歸檔。

  • 效能非原生:基於使用者態檔案系統(FUSE)實現,檔案系統操作需轉換為HTTP API調用,導致高延遲和低隨機I/O效能,不推薦用於資料庫或高頻寫入情境。

  • POSIX相容性不完整:無法完整支援所有標準檔案系統操作,如對根路徑執行chmodchown受限,可能引發應用相容性問題。

imageCPFS 智算版

靜態/動態 | RWX | 計費

  • 說明:專為AI與智算領域打造的超高效能並行檔案系統,提供高並發吞吐和IOPS效能。

  • 情境:AIGC大模型訓練/推理、自動駕駛模擬等對並行I/O效能要求高的AI智算領域。

  • 成本與可用性:成本較高,面向特定高效能情境。處於邀測階段且僅在部分地區可用。

  • 掛載限制:不支援跨VPC掛載。

imageCPFS 通用版

靜態 | RWX | 計費

  • 說明:面向Alibaba Cloud HPC情境的共用檔案系統,提供高於通用NAS的IOPS和吞吐頻寬。

  • 情境:基因計算、巨量資料分析、資料緩衝加速等傳統HPC領域。

  • 成本與可用性:成本高於通用NAS,且僅在部分地區可用。

  • 掛載限制:僅支援NFS協議,且不支援跨VPC掛載。

除基礎效能外,不同儲存方案在故障恢複、容量管理和資料保護等營運情境中也存在差異,可從以下幾個問題進一步規劃選型。

Pod所在節點故障時,應用和資料如何恢複?

當Pod所在節點發生故障時,應用能否快速恢複、資料是否安全,是高可用架構的核心。

  • 雲端硬碟:CSI會自動將雲端硬碟從舊節點卸載,並掛載到新節點。

  • NAS / OSS / CPFS:共用儲存,Pod 在新節點啟動後可立即重新掛載,無需等待儲存卷“漂移”。恢複速度僅取決於應用本身的啟動時間。

  • HostPath:資料固定在特定節點上。如果該節點故障,Pod 將無法在其他節點上啟動並訪問原有資料。依賴應用自身實現跨節點的資料複製和高可用。

選型建議:如果應用(如單一實例資料庫)可容忍分鐘級中斷,可選擇雲端硬碟。如需實現快速故障切換(如高可用 Web 服務),建議優先使用共用儲存並部署多副本。如果應用自身處理資料複製和高可用,可選擇本地碟以獲得極致效能。

如何規劃和管理應用的儲存容量?

合理的容量規劃能有效控製成本,並防止因儲存耗盡導致服務中斷。不同儲存類型的 PVC 容量聲明對實際儲存用量的約束效果存在差異。

  • 雲端硬碟:PVC 聲明的容量與實際分配的雲端硬碟容量一一對應,容量限制可實際生效,且支援線上擴容。適合容量需求明確、需要嚴格資源隔離的情境。

  • OSS:本身無實際容量上限,按實際用量計費。PVC 容量僅用於匹配PV,不限制實際儲存用量。

  • NAS / CPFS:

    • 靜態卷:PVC 容量僅用於匹配PV,不對實際儲存用量產生限制;實際可用容量取決於後端執行個體的總容量上限,所有 Pod 共用。

    • 動態磁碟區:NAS(僅subpath方式且allowVolumeExpansiontrue)及CPFS智算版情境下,PVC 容量將轉換為對應目錄的配額,限制實際容量;其他情境下行為與靜態卷一致。

選型建議:對容量有精確預算和強隔離需求的應用(如多租戶環境下的資料庫)推薦使用雲端硬碟。大量 Pod 共用資料、容量動態變化的情境(如日誌、Web 靜態檔案)推薦使用共用儲存。

如何備份應用資料,防止誤刪或損壞?

  • 雲端硬碟:通過快照實現,可對整個資料卷進行秒級建立和快速恢複,也可建立備份計劃或立即備份,降低資料丟失風險。

  • NAS:提供資源回收筒(通過CNFS,支援恢複單個檔案或目錄)和快照(部分NAS類型支援)。

  • OSS:提供版本控制生命週期管理能力,以防止誤操作,或進行資料歸檔。

  • HostPath:資料保護依賴應用程式層的高可用和複製機制。

選型建議:需要對整個資料卷進行快速、一致性備份恢複時推薦選擇雲端硬碟快照。需要長期歸檔、合規審計或恢複單個檔案的情境,推薦使用 NAS或OSS提供的相應功能。使用HostPath則必須確保應用程式層有完善的資料保護策略。

關鍵組件與概念

  • CSI組件(csi-plugin、csi-provisioner)

    Kubernetes社區推薦的儲存外掛程式實現方案,已在叢集中預設部署。負責與阿里雲儲存服務的API進行互動,實現儲存卷的自動建立、掛載、卸載等全生命週期管理。詳見管理CSI組件

  • 容器網路檔案系統 (CNFS)

    ACK託管叢集Pro版提供的儲存增強功能,將NAS、OSS、CPFS等抽象為Kubernetes CRD對象,提供更精細化的管理能力,如子目錄動態建立、配額管理、IO效能監控、資源回收筒、分布式緩衝等。詳見容器網路檔案系統CNFS

使用說明

使用CSI時需注意以下使用限制。

  • 叢集版本:需為1.14及以上。如需升級,請參見手動升級叢集

  • 叢集環境:已在ACK叢集中完成全面適配和驗證。對於非ACK叢集(非阿里環境叢集、阿里雲自建叢集),由於配置、許可權、網路等環境差異,CSI無法保證開箱即用。

    建議參見alibaba-cloud-csi-driver源碼並結合自身環境進行適配。
  • 節點配置:kubelet運行參數--enable-controller-attach-detachtrue

  • 作業系統:不支援Windows節點。

  • RBAC許可權:PV是叢集層級的資源,PVC是命名空間層級的資源。進行RBAC授權時,需注意不同角色對這兩類資源的許可權差異。

    如果ACK預設提供的預置角色(管理員、營運人員等)無法滿足需求,請配置自訂許可權。例如,ACK預設的營運人員角色對PVC有讀寫權限,但對PV僅有隻讀許可權,因此無法手動建立PV。詳見使用RBAC為叢集內資源操作授權

FAQ

如何判斷叢集使用的儲存外掛程式模式?

可選擇以下方式查看。

通過控制台查看節點注釋

  1. ACK叢集列表頁面,單擊目的地組群名稱,在叢集詳情頁左側導覽列,選擇節點管理 > 節點

  2. 在節點列表的操作列,單擊詳情,在基本資料頁簽下查看節點注釋

    若存在volumes.kubernetes.io/controller-managed-attach-detach: true,表示儲存外掛程式為CSI;若不存在,則為Flexvolume。

通過命令查看kubelet參數

登入節點,查看kubelet參數。

ps -ef | grep kubelet

預期輸出:

--enable-controller-attach-detach=true
  • true:儲存外掛程式為CSI。

  • false:儲存外掛程式為Flexvolume。

如何手動為CSI授權?

CSI在執行儲存卷的掛載、卸載、建立、刪除等操作時,需要被授予訪問其他產品資源的相應許可權。通常情況下,叢集已預設安裝CSI且配置相關許可權。如需手動授權,可參見以下內容。

  • 使用RAM角色授權(預設):CSI使用AliyunCSManagedCsiRole角色來訪問其他雲產品資源,詳見Container ServiceACK服務角色

    • ACK託管叢集:CSI使用的RAM角色許可權的Token被儲存在名為addon.csi.token的Secret中。可掛載該Secret,從而實現RAM角色授權。

    • ACK專有叢集:CSI繼承其Pod所在節點的RAM角色。

    關於如何為RAM角色授權,請參見管理RAM角色的許可權

  • 使用AccessKey授權

    • 通過環境變數:將AccessKey建立為Kubernetes Secret,再通過環境變數的方式注入到CSI的Pod中,避免在部署模板中明文暴露密鑰。

    • 直接寫入YAML:直接在CSI的YAML中寫入AccessKey資訊。不推薦在生產環境使用。

附錄