本文為您介紹叢集預設提供的StorageClass儲存類型和適用情境,以及如何配置Default StorageClass儲存類型。
StorageClass
ACK Serverless叢集預設不提供StorageClass,您需要根據需求自行建立StorageClass。StorageClass模板如下。
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: alicloud-disk-alltype
parameters:
type: cloud_essd,cloud_ssd,cloud_efficiency
provisioner: diskplugin.csi.alibabacloud.com
reclaimPolicy: Delete
allowVolumeExpansion: true
該StorageClass會按照順序依次嘗試建立cloud_essd、cloud_ssd、cloud_efficiency類型的雲端硬碟。如果當前可用性區域不支援cloud_essd,則會嘗試建立cloud_ssd,依此類推。您可以調整類型和順序來自訂建立的雲端硬碟類型。
Default StorageClass
Kubernetes提供Default StorageClass機制,您在PVC不指定StorageClass的情況下,可以通過Default StorageClass建立資料卷,請參見Default StorageClass。
由於Default StorageClass會對所有PVC起作用,對於具備不同類型儲存卷能力的叢集,需要小心使用。例如,您想產生一個NAS類型PVC、PV,並綁定PVC和PV,但可能因為有Default StorageClass而自動建立了雲端硬碟PV。基於上述原因,ACK Serverless叢集沒有提供Default StorageClass,如果您期望使用Default StorageClass,可以參考以下配置。
一個叢集中最多配置一個Default StorageClass,否則預設能力將不起作用。
配置Default StorageClass。
執行以下命令將StorageClass (alicloud-disk-ssd)配置為一個Default StorageClass。
kubectl patch storageclass alicloud-disk-ssd -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
這時查詢叢集中的StorageClass可以看到alicloud-disk-ssd名字後面加了(default)字樣。
kubectl get sc
返回結果如下:
NAME PROVISIONER AGE alicloud-disk-ssd (default) diskplugin.csi.alibabacloud.com 96m
使用Default StorageClass。
使用以下模板建立一個沒有配置StorageClass的PVC。
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: disk-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi
叢集會自動建立一個雲端硬碟卷(PV),且配置了Default StorageClass(alicloud-disk-ssd)。
kubectl get pvc
返回結果如下:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE disk-pvc Bound d-bp18pbai447qverm3ttq 20Gi RWO alicloud-disk-ssd 49s
後續步驟
您可以通過以下命令取消預設儲存類型配置。kubectl patch storageclass alicloud-disk-ssd -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'