雲端硬碟是阿里雲為Elastic Compute Service提供的資料區塊層級的Block Storage產品,具有低時延、高效能、持久性、高可靠等特點。ACK Serverless支援使用CSI外掛程式建立雲端硬碟動態儲存裝置卷。本文介紹如何使用雲端硬碟動態儲存裝置卷,及如何驗證雲端硬碟動態儲存裝置卷的持久化儲存特性。
使用情境
雲端硬碟適用於以下儲存情境:
對磁碟I/O要求高的應用,且沒有共用資料的需求,如MySQL、Redis等資料存放區服務。
高速寫日誌。
持久化儲存資料,不會因Pod生命週期的結束而消失。
除了基於已有雲端硬碟建立靜態儲存卷外,您也可以使用StorageClass(儲存類)來定義雲端硬碟資源,實現動態建立和分配儲存資源。通過在PVC(儲存聲明)中關聯StorageClass,系統會自動根據配置建立並綁定PV(儲存卷)。該方式無需預先手動建立和配置儲存資源,可以降低底層基礎設施的複雜性,讓您更關注應用的儲存需求。
ACK Serverless叢集預設不提供StorageClass,您需要根據需求自行建立StorageClass。
Kubernetes提供Default StorageClass機制,您在PVC不指定StorageClass的情況下,可以通過Default StorageClass建立資料卷。更多關於Kubernetes儲存相關的資訊,請參見儲存基礎知識。
前提條件
已建立ACK Serverless叢集。具體操作,請參見建立ACK Serverless叢集。
已通過kubectl工具串連ACK Serverless叢集。具體操作,請參見通過kubectl串連Kubernetes叢集。
已手動安裝CSI儲存外掛程式。具體操作,請參見安裝與升級csi-provisioner組件。
操作步驟
控制台
步驟一:建立StorageClass
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇。
在儲存類頁面,單擊右上方的建立。
在建立對話方塊,配置StorageClass的相關參數。
部分配置項說明如下所示:
配置項
說明
名稱
StorageClass的名稱。格式要求請參考介面提示。
儲存卷類型
選擇雲端硬碟。
參數
預設參數type,其值為cloud_essd。表示雲端硬碟類型。 支援設定的參數值如下:
cloud_essd:ESSD雲端硬碟cloud_regional_disk_auto:ESSD 同城冗餘雲端硬碟elastic_ephemeral_disk_premium:彈性臨時盤-進階版elastic_ephemeral_disk_standard:彈性臨時盤-標準版cloud_ssd:SSD雲端硬碟cloud_efficiency:高效雲端硬碟
支援任意組合上述參數,例如:
type: cloud_ssd,cloud_essd,此時將按照配置順序依次嘗試建立指定類型的雲端硬碟,直到建立成功。說明部分ECS機型不支援ESSD、彈性臨時盤等類型的雲端硬碟掛載。更多資訊,請參見Block StorageFAQ。
可添加自訂參數。例如,配置zoneId,表示自動建立雲端硬碟所在的地區。單可用性區域叢集,與叢集所在地區相同。例如,
cn-beijing-a;多可用性區域叢集,zoneId可同時配置多個。例如,cn-beijing-a, cn-beijing-b。回收策略
雲端硬碟的回收策略,預設為Delete,支援Retain。
Delete模式:刪除PVC的時候,PV和雲端硬碟會一起刪除。
Retain模式:刪除PVC的時候,PV和雲端硬碟資料不會被刪除,需要您手動刪除。
如果資料安全性要求高,推薦使用Retain模式以免誤刪資料。
繫結模式
雲端硬碟的繫結模式。預設為Immediate:表示先建立雲端硬碟再建立Pod。
參數配置完成後,單擊建立。
建立成功後在儲存類列表中可看到剛建立的StorageClass。
步驟二:建立PVC
在叢集管理頁左側導覽列,選擇。
在儲存聲明頁面,單擊右上方的建立。
在建立儲存聲明對話方塊中,配置參數。
配置項
說明
儲存宣告類型
支援雲端硬碟、NAS兩種雲端儲存類型。本文中選擇雲端硬碟。
名稱
建立的儲存聲明名稱在命名空間內必須唯一。
分配模式
本文中選擇使用儲存類動態建立。
已有儲存類
單擊選擇儲存類,在選擇儲存類對話方塊目標儲存類右側操作列單擊選擇。
總量
所建立儲存卷的容量。
訪問模式
預設為ReadWriteOnce。
單擊建立。
建立成功後在儲存聲明列表中可看到建立的儲存聲明,並且已綁定相應的儲存卷。
步驟三:建立應用
在叢集管理頁左側導覽列,選擇。
在有狀態頁面,單擊使用鏡像建立。
- 配置建立應用的參數資訊。以下主要為您介紹資料卷的配置。關於其他參數的描述,請參見建立有狀態工作負載StatefulSet。
ASK資料卷支援配置本機存放區和雲端儲存,本樣本需要配置雲端儲存類型。
本例中配置了一個雲端硬碟類型的資料卷,將該雲端硬碟掛載到容器中/tmp路徑下,在該路徑下產生的容器資料會儲存到雲端硬碟中。
- 所有的資訊都配置完成後,單擊建立。建立成功後,您就可以正常使用資料卷。
kubectl
步驟一:建立StorageClass
在多可用性區域叢集情境下,您可以使用先建立雲端硬碟,然後再建立Pod的方式建立StorageClass。
使用以下內容,建立storage-class-csi.yaml檔案。
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: alicloud-disk-ssd-b provisioner: diskplugin.csi.alibabacloud.com parameters: type: cloud_essd,cloud_ssd,cloud_efficiency encrypted: "false" reclaimPolicy: Retain allowVolumeExpansion: true volumeBindingMode: Immediate參數
說明
provisioner
配置為
diskplugin.csi.alibabacloud.com。表示使用阿里雲雲端硬碟Provisioner外掛程式建立StorageClass。type
表示雲端硬碟類型。支援設定的參數值如下:
cloud_auto:ESSD AutoPL雲端硬碟cloud_essd(預設值):ESSD雲端硬碟cloud_essd_entry:ESSD Entry雲端硬碟cloud_ssd:SSD雲端硬碟cloud_efficiency:高效雲端硬碟elastic_ephemeral_disk_standard: 標準版彈性臨時盤elastic_ephemeral_disk_premium: 進階版彈性臨時盤cloud_regional_disk_auto: ESSD同城冗餘雲端硬碟
支援任意組合上述參數,例如:
type: cloud_ssd,cloud_essd,cloud_auto,此時將按照配置順序依次嘗試建立指定類型的雲端硬碟,直到建立成功。重要您可以基於節點可用性區域和執行個體規格,結合雲端硬碟計費、效能等選擇合適的雲端硬碟類型。相關參考如下:
encrypted
可選,標識建立的雲端硬碟是否加密。預設為false,建立的雲端硬碟不加密。
reclaimPolicy
雲端硬碟的回收策略,預設為Delete,支援Retain。
Delete模式:刪除PVC時,PV和雲端硬碟會一起刪除。
Retain模式:刪除PVC時,PV和雲端硬碟資料不會被刪除,需要您手動刪除。
如果資料安全性要求高,推薦使用Retain方式以免誤刪資料。
allowVolumeExpansion
配置為true時,可以實現雲端硬碟的自動擴容。
volumeBindingMode
雲端硬碟的繫結模式。預設為Immediate:表示先建立雲端硬碟再建立Pod。
執行以下命令,建立StorageClass。
kubectl apply -f storage-class-csi.yaml查看建立的StorageClass。
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇。
在儲存類頁面查看建立的StorageClass。
步驟二:建立PVC
使用以下內容,建立pvc-ssd.yaml檔案。
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: disk-pvc spec: accessModes: - ReadWriteOnce volumeMode: Filesystem resources: requests: storage: 25Gi storageClassName: alicloud-disk-ssd-b參數
說明
name
PVC的名稱。
accessModes
配置訪問模式。
volumeMode
可選,掛載雲端硬碟的格式,支援Filesystem檔案系統掛載。
storageClassName
StorageClass的名稱,用於綁定StorageClass。
storage
申請的雲端硬碟大小,最小為20 GiB。
執行以下命令,建立PVC。
kubectl create -f pvc-ssd.yaml查看建立的PVC。
在叢集管理頁左側導覽列選擇。可以在儲存聲明頁面看到建立的PVC。
步驟三:建立應用
建立pvc-dynamic.yaml檔案。
建立一個名為nginx-dynamic的應用,並掛載PVC。
apiVersion: apps/v1 kind: StatefulSet metadata: name: nginx-dynamic spec: selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx ports: - containerPort: 80 name: web volumeMounts: - name: pvc-disk mountPath: /data volumes: - name: pvc-disk persistentVolumeClaim: claimName: disk-pvc參數
說明
mountPath
雲端硬碟掛載的位置。
claimName
PVC的名稱,用於綁定PVC。
執行以下命令,建立應用並掛載PVC。
kubectl create -f pvc-dynamic.yaml查看建立的應用。
在叢集管理頁左側導覽列選擇。您可以在有狀態頁面看到建立的應用。
相關文檔
如果在使用雲端硬碟儲存卷的過程中碰到問題,請參見雲端硬碟儲存卷FAQ進行排查。
如果雲端硬碟大小不滿足要求或者磁碟已滿,請參見擴容雲端硬碟儲存卷進行擴容。
如果需要即時瞭解雲端硬碟的使用方式,請參見容器儲存監控概述。