本文为您介绍集群默认提供的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"}}}'