當您在ACK叢集中運行工作負載時,您可能會有應用資料持久化儲存、敏感和配置資料存放區、儲存資源動態供應等儲存需求。ACK叢集基於CSI外掛程式實現了容器儲存功能,藉助阿里雲儲存服務提供並管理靜態或動態儲存裝置卷資源。
支援的儲存卷概覽
容器儲存介面(CSI)外掛程式是當前Kubernetes社區推薦的外掛程式實現方案。Container ServiceACK的容器儲存功能基於CSI外掛程式實現,深度融合Block StorageEBS、Apsara File Storage NAS、Object Storage Service、本地碟等,完全相容Kubernetes原生的儲存卷類型,例如EmptyDir、HostPath、Secret、ConfigMap等。CSI外掛程式支援的儲存卷如下。
Container ServiceACK支援Pod自動綁定阿里雲雲端硬碟、NAS、OSS、本地卷等儲存服務。每種儲存卷的主要特點、應用情境及相關計費如下。
CSI外掛程式支援靜態儲存卷掛載和動態儲存裝置卷掛載兩種方式。在靜態儲存卷掛載的方式中,通常需要手動編輯和建立一個PV和PVC進行掛載。當需要大量的PV和PVC時,您可以建立動態儲存裝置卷進行掛載。PV和PVC的概念如下:
PersistentVolume(PV)
叢集內的儲存資源。PV獨立於Pod的生命週期,可根據不同的StorageClass類型建立不同類型的PV。
PersistentVolumeClaim(PVC)
叢集內的儲存請求。例如,PV是Pod使用的節點資源,PVC則聲明使用PV資源。當PV資源不足時,PVC可動態建立PV。
儲存服務 | 待用資料卷 | 動態資料卷 | 預設部署 | 主要特點 | 應用情境 | 計費說明 |
阿里雲雲端硬碟 | 支援 | 支援 | 是 | 非共用儲存,每個雲端硬碟只能在單個節點掛載。 |
更多資訊,請參見雲端硬碟儲存卷概述。 | 關於雲端硬碟計費項目資訊,請參見Block Storage計費。關於雲端硬碟的價格資訊,請參見Elastic Compute Service產品詳情頁。 |
阿里雲NAS | 支援 | 支援 | 是 | 共用儲存,可提供高效能、高輸送量儲存服務。 |
更多資訊,請參見NAS儲存卷概述。 | |
阿里雲OSS | 支援 | 支援 | 是 | 共用儲存,使用者態檔案系統。 |
說明 OSS資料卷通過OSSFS掛載,是一種通過FUSE方式類比實現的使用者態檔案系統。對於寫情境穩定性欠佳,因此在寫情境中推薦使用其他儲存卷類型。 更多資訊,請參見OSS儲存卷概述。 |
不同阿里雲儲存服務提供儲存卷的使用限制不同,請閱讀下文。
使用限制
您在使用ACK儲存CSI外掛程式時需要注意CSI外掛程式本身的使用限制,也需要注意使用CSI外掛程式時涉及的阿里雲儲存產品的使用限制。
叢集版本限制
使用CSI外掛程式時,需確保ACK叢集版本為v1.14及以上,且kubelet運行參數--enable-controller-attach-detach
需要設定為true
。如需升級叢集,請參見手動升級叢集。
CSI外掛程式使用限制
阿里雲CSI外掛程式已在社區開源,主要支援ACK叢集。對於非ACK叢集(非阿里環境叢集、阿里雲自建叢集),由於叢集配置、許可權管理、網路差異等原因,外掛程式無法無縫支援。如果您處於這樣的叢集環境,可以通過閱讀源碼、修改配置等方式進行適配。更多資訊,請參見alibaba-cloud-csi-driver。
儲存卷使用限制
儲存卷類型 | 使用限制 |
雲端硬碟儲存卷 | 請參見使用限制。 |
NAS儲存卷 |
|
OSS儲存卷 |
|
容器儲存功能概覽
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的更多資訊,請參見容器網路檔案系統CNFS概述、管理NAS生命週期、管理OSS生命週期。
CSI組件
CSI外掛程式包括CSI-Plugin和CSI-Provisioner兩個組件,用於實現資料卷的自動建立、掛載和卸載。CSI組件已在ACK託管叢集和ACK專有叢集中預設部署。關於CSI組件的更多資訊和升級步驟,請參見管理CSI組件。
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角色。