使用动态存储卷需要您手动创建StorageClass,并在PVC中通过storageClassName来指定期望的云盘类型。
前提条件
背景信息
创建StorageClass
您可以根据不同的场景通过以下两种方式创建StorageClass。
- 使用Topology(延迟绑定)方式创建StorageClass。
在多可用区集群场景下,延迟绑定可以优化ECS和云盘不在一个可用区的问题。以下通过部署名为storage-class-csi-topology.yaml文件为例,创建StorageClass。
- 创建storage-class-topology.yaml文件。
- 拷贝以下模板至文件中。
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: alicloud-disk-topology-ssd provisioner: diskplugin.csi.alibabacloud.com parameters: type: cloud_ssd reclaimPolicy: Retain volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: true
参数 说明 provisioner 配置为diskplugin.csi.alibabacloud.com。标识StorageClass使用阿里云云盘provisioner插件创建。 type 标识云盘类型,支持cloud_efficiency、cloud_ssd、cloud_essd、available四种参数,其中available会对ESSD、SSD、高效依次尝试创建,直到创建成功。 说明 部分ECS机型不支持ESSD云盘挂载,请参见块存储FAQ。reclaimPolicy 云盘的回收策略,默认为Delete,支持Retain。 - Delete模式:删除PVC的时候,PV和云盘会一起删除。
- Retain模式:删除PVC的时候,PV和云盘数据不会被删除,需要您手动删除。
如果数据安全性要求高,推荐使用Retain方式以免误删数据。
encrypted 可选参数,标识创建的云盘是否加密。默认情况是false,创建的云盘不加密。 volumeBindingMode WaitForFirstConsumer时表示使用延迟绑定,即调度器先调度pod,并根据pod的可用区信息创建云盘。 allowVolumeExpansion 配置为true时,可以实现云盘的自动扩容。 performanceLevel 值为PL1、PL2、或PL3。更多信息,请参见容量范围与性能级别的关系。 - 执行以下命令创建StorageClass。
kubectl apply -f storage-class-topology.yaml
- 如果您先创建云盘,再创建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_ssd regionId: cn-shenzhen zoneId: cn-shenzhen-b reclaimPolicy: Retain allowVolumeExpansion: true volumeBindingMode: Immediate
参数 说明 provisioner 配置为diskplugin.csi.alibabacloud.com。标识StorageClass使用阿里云云盘provisioner插件创建。 type 标识云盘类型,支持cloud_efficiency、cloud_ssd、cloud_essd、available四种参数,其中available会对ESSD、SSD、高效依次尝试创建,直到创建成功。 说明 部分ECS机型不支持ESSD云盘挂载,请参见块存储FAQ。regionId 可选参数。期望创建云盘的区域。 zoneId 可选参数。期望创建云盘的可用区。 reclaimPolicy 云盘的回收策略,默认为Delete,支持Retain。 - Delete模式:删除PVC的时候,PV和云盘会一起删除。
- Retain模式:删除PVC的时候,PV和云盘数据不会被删除,需要您手动删除。
如果数据安全性要求高,推荐使用Retain方式以免误删数据。
encrypted 可选参数,标识创建的云盘是否加密。默认情况是false,创建的云盘不加密。 - 执行以下命令,创建StorageClass。
kubectl apply -f storage-class-csi.yaml
创建PVC
以下模板为创建动态卷PV的示例YAML。
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: disk-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 25Gi
storageClassName: alicloud-disk-ssd
说明
storage
:定义申请云盘大小,最小为20GiB。
创建应用
apiVersion: v1
kind: Service
metadata:
name: nginx
labels:
app: nginx
spec:
ports:
- port: 80
name: web
clusterIP: None
selector:
app: nginx
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: web
spec:
selector:
matchLabels:
app: nginx
serviceName: "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
在文档使用中是否遇到以下问题
更多建议
匿名提交