在叢集中運行工作負載時,可能會有應用資料持久化儲存、敏感和配置資料存放區、儲存資源動態供應等儲存需求。ACK叢集基於CSI外掛程式實現了容器儲存功能,藉助阿里雲儲存服務提供並管理靜態或動態儲存裝置卷資源。
支援的儲存卷概覽
容器儲存介面(CSI)外掛程式是當前Kubernetes社區推薦的外掛程式實現方案。ACK的容器儲存功能基於CSI外掛程式實現,深度融合Block StorageEBS、Apsara File Storage NAS、CPFS、Object Storage Service、本地碟等,完全相容Kubernetes原生的儲存卷類型,例如EmptyDir、HostPath、Secret、ConfigMap等。CSI外掛程式支援的儲存卷如下。
ACK支援Pod自動綁定阿里雲雲端硬碟、NAS、OSS、CPFS、本地卷等儲存服務。每種儲存卷的主要特點、應用情境及相關計費如下。
CSI外掛程式支援靜態儲存卷掛載和動態儲存裝置卷掛載兩種方式。在靜態儲存卷掛載的方式中,通常需要手動編輯和建立一個PersistentVolume(PV)和PersistentVolumeClaim(PVC)進行掛載。當需要大量PV和PVC時,您可以建立動態儲存裝置卷進行掛載。
儲存服務 | 靜態儲存卷 | 動態儲存裝置卷 | 預設部署 | 主要特點 | 應用情境 | 計費說明 |
阿里雲雲端硬碟 | 支援 | 支援 | 是 | 非共用儲存,每個雲端硬碟只能在單個節點掛載。 |
更多資訊,請參見Block Storage卷。 | 關於雲端硬碟計費項目資訊,請參見Block Storage計費。關於雲端硬碟的價格資訊,請參見Elastic Compute Service產品詳情頁。 |
阿里雲NAS | 支援 | 支援 | 是 | 共用儲存,可提供高效能、高輸送量儲存服務。 |
更多資訊,請參見NAS儲存卷。 | |
阿里雲OSS | 支援 | 支援 | 是 | 共用儲存,使用者態檔案系統。 |
說明 OSS儲存卷通過OSSFS掛載,是一種通過FUSE方式類比實現的使用者態檔案系統。對於寫情境穩定性欠佳,因此在寫情境中推薦使用其他儲存卷類型。 更多資訊,請參見OSS儲存卷。 | |
阿里雲CPFS(通用版) | 支援 | 支援 | 否 | 高效能、高頻寬、共用儲存。 |
更多資訊,請參見使用CPFS通用版靜態儲存卷和管理CPFS通用版動態儲存裝置卷。 | |
阿里雲CPFS(智算版) | 支援 | 不支援 | 否 | 超高輸送量和IOPS效能。 | 適用於AIGC、自動駕駛等智算情境。 | 計費說明。 |
阿里雲ENS雲端硬碟 | 支援 | 支援 | 否 | 低延時,靠近終端使用者,非高可用,只能在單節點掛載。 | 更多資訊,請參見什麼是邊緣節點服務ENS、在ACK Edge叢集中使用ENS雲端硬碟 | 支援隨用隨付方式,詳情請參見計費概述。 |
使用限制
使用CSI外掛程式時需注意以下使用限制。
叢集版本限制
ACK叢集版本需為1.14及以上,且kubelet運行參數--enable-controller-attach-detach為true。如需升級叢集,請參見手動升級叢集。
節點作業系統限制
不支援Windows節點。
CSI外掛程式使用限制
支援ACK叢集。對於非ACK叢集(非阿里環境叢集、阿里雲自建叢集),由於叢集配置、許可權管理、網路差異等原因,外掛程式無法無縫支援。建議通過閱讀源碼、修改配置等方式進行適配,詳見alibaba-cloud-csi-driver。
儲存卷使用限制
儲存卷類型 | 使用限制 |
雲端硬碟儲存卷 |
|
NAS儲存卷 |
|
OSS儲存卷 |
|
CPFS通用版儲存卷 |
|
CPFS智算版儲存卷 |
容器儲存功能概覽
ACK不同叢集形態與各儲存服務能力的對應關係如下表。
存放裝置分類 | 儲存能力 | ACK託管和專有叢集 | ACK Serverless叢集 | ACK安全沙箱 |
Block Storage | 雲端硬碟掛載和卸載 |
|
|
|
線上擴容(Resize) |
|
|
| |
快照(Snapshot) |
|
|
| |
容器IO監控 |
|
|
| |
檔案系統 | 支援XFS、 Ext4 | 支援XFS、 Ext4 | 支援XFS、 Ext4 | |
塊、裸裝置 |
|
|
| |
快照恢複 |
|
|
| |
雲端硬碟隊列設定 |
|
|
| |
資料加密CMK和BYOK |
|
|
| |
多可用性區域感知 |
|
|
| |
使用者自訂標籤 |
|
|
| |
跨主機遷移 |
|
|
| |
Apsara File Storage NAS | NAS建立,掛載,卸載 |
|
|
|
Samba掛載卸載 |
|
|
| |
資源回收筒 (CNFS) |
|
|
| |
動態儲存裝置卷-子目錄/共用目錄(CNFS) |
|
|
| |
資料加密CMK(CNFS,極速NAS) |
|
|
| |
容量控制Quota(CNFS) |
|
|
| |
容量/IO監控 (CNFS) |
|
|
| |
線上擴容(CNFS) |
|
|
| |
Object Storage Service | OSS掛載和卸載 |
|
|
|
資料加密BYOK |
|
|
| |
本機存放區 | Block StorageLVM管理 |
|
|
|
VolumeGroup自動化配置 |
|
|
| |
節點LVM容量感知調度 |
|
|
| |
PMEM Direct Mem |
|
|
| |
PMEM LVM卷 |
|
|
|
容器網路檔案系統CNFS
管理容器儲存資源時,可在ACK託管叢集Pro版中使用容器網路檔案系統CNFS(Container Network File System)。CNFS可以提升NAS、OSS儲存卷的效能和QoS控制,將阿里雲的檔案儲存體抽象為一個K8s對象(CRD)進行獨立管理,包括建立、刪除、描述、掛載、監控及擴容等營運操作,提供資源回收筒、資源配額、儲存卷IO效能監控等功能。詳見容器網路檔案系統CNFS、管理NAS生命週期、管理OSS生命週期。
CSI組件
CSI外掛程式包括CSI-Plugin和CSI-Provisioner兩個組件,用於實現儲存卷的自動建立、掛載和卸載。CSI組件已在ACK託管叢集和ACK專有叢集中預設部署。關於CSI組件的更多資訊和升級步驟,請參見管理CSI組件。
RBAC許可權說明
PV是cluster層級的資源,PVC是namespace層級的資源。在進行RBAC授權時,如果ACK預設提供的預置角色(管理員、營運人員等)無法滿足需求,請配置自訂許可權。例如,如果授權了營運人員許可權,將具備PVC的讀寫權限和PV的唯讀許可權,該許可權無法建立PV。
更多資訊,請參見使用RBAC為叢集內資源操作授權。
FAQ
如何判斷叢集使用的儲存外掛程式模式?
您可以在控制台查看節點注釋,或使用kubectl查看kubelet參數。
通過控制台查看節點注釋
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇。
在目標節點操作列選擇。
在基本資料頁簽下查看節點注釋。如果存在
volumes.kubernetes.io/controller-managed-attach-detach: true,表示叢集儲存外掛程式為CSI;如果沒有,表示叢集儲存外掛程式為Flexvolume。
通過命令查看kubelet參數
執行以下命令查看kubelet參數。
ps -ef | grep kubelet預期輸出:
--enable-controller-attach-detach=true若
--enable-controller-attach-detach的值為true,則表示叢集儲存外掛程式為CSI。若
--enable-controller-attach-detach的值為false,則表示叢集儲存外掛程式為Flexvolume。
如何手動為CSI外掛程式授權?
CSI外掛程式在儲存卷的掛載、卸載、建立、刪除等操作上都需要您授予訪問其他產品資源的許可權。通常叢集已預設安裝CSI組件且已有相關許可權。如果您需要在叢集中手動完成授權,CSI外掛程式支援直接使用AccessKey授權,也支援使用RAM角色授權的方式(預設)進行授權。
使用AccessKey資訊授權
直接在CSI部署模板中寫入AccessKey資訊。
也可以通過Secret方式將AccessKey資訊傳入環境變數。
使用RAM角色授權:CSI外掛程式使用AliyunCSManagedCsiRole角色來訪問您在其他雲產品中的資源。更多資訊,請參見Container ServiceACK服務角色。關於如何為RAM角色授權,請參見為RAM角色授權。
ACK託管叢集:CSI使用的RAM角色許可權的Token被儲存在名為addon.csi.token的Secret中,CSI外掛程式掛載該Secret即可實現RAM角色授權,並訪問OpenAPI。
ACK專有叢集:CSI使用其Pod所在的ECS節點的RAM角色。