動態存儲卷需要您手動創建StorageClass,并在PVC中通過storageClassName來指定期望的云盤類型。
創建指定zoneId的StorageClass
創建并復制以下內容到storage-class.yaml中。
kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: alicloud-disk-ssd-hangzhou-b provisioner: alicloud/disk parameters: type: cloud_ssd regionId: cn-hangzhou zoneId: cn-hangzhou-b reclaimPolicy: Retain
參數說明如下。
參數
描述
provisioner
配置為alicloud/disk,標識StorageClass使用阿里云云盤provisioner插件創建。
type
標識云盤類型,支持
cloud_efficiency
、cloud_ssd
、cloud_essd
、available
四種參數,其中available
會對ESSD、SSD、高效云盤依次嘗試創建,直到創建成功。regionId
期望創建云盤的地域。
reclaimPolicy
云盤的回收策略,默認為
Delete
,支持Retain
。如果數據安全性要求高,推薦使用Retain
方式以免誤刪。zoneId
期望創建云盤的可用區。
如果是多可用區的情況,
zoneId
可同時配置多個,示例如下:zoneId: cn-hangzhou-a,cn-hangzhou-b,cn-hangzhou-c
encrypted
可選參數。創建的云盤是否加密,默認情況是
false
,創建的云盤不加密。執行以下命令,創建StorageClass。
kubectl apply -f storage-class.yaml
創建延遲綁定的StroageClass
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: alicloud-disk-topology-ssd
provisioner: alicloud/disk
parameters:
type: cloud_ssd
reclaimPolicy: Retain
volumeBindingMode: WaitForFirstConsumer
如果配置的StorageClass沒有
WaitForFirstConsumer
,且沒有配置zoneid
,這時創建的PV和Disk-Controller組件所在節點的Zone是相同的。如果配置的StorageClass沒有
WaitForFirstConsumer
,但是配置了zoneid
,這時創建的PV會根據zoneid
的配置,輪詢使用其中的zoneid
。如果使用WaitForFirstConsumer,會根據消費此PVC的Pod所調度的節點創建云盤,即在Pod調度的可用區創建云盤。
創建PVC
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: disk-ssd
spec:
accessModes:
- ReadWriteOnce
storageClassName: alicloud-disk-ssd-hangzhou-b
resources:
requests:
storage: 20Gi
---
kind: Pod
apiVersion: v1
metadata:
name: disk-pod-ssd
spec:
containers:
- name: disk-pod
image: nginx
volumeMounts:
- name: disk-pvc
mountPath: "/mnt"
restartPolicy: "Never"
volumes:
- name: disk-pvc
persistentVolumeClaim:
claimName: disk-ssd
默認選項:
在多可用區的集群中,需要您手動創建上述StorageClass,這樣可以更準確地定義所需要云盤的可用區信息。
集群默認提供了以下幾種StorageClass,可以在單可用區類型的集群中使用。
alicloud-disk-efficiency:高效云盤。
alicloud-disk-ssd:SSD云盤。
alicloud-disk-essd:ESSD云盤。
alicloud-disk-available:提供高可用選項,優先創建SSD云盤;如果SSD云盤售盡,則創建高效云盤。
重要對于alicloud-disk-controller v1.14.8.44-c23b62c5-aliyun之前的版本,優先創建ESSD云盤;如果ESSD云盤售盡,則創建SSD云盤;如果SSD云盤售盡,則創建高效云盤。
alicloud-disk-topology:使用延遲綁定的方式創建云盤。
使用云盤創建多實例StatefulSet
使用volumeClaimTemplates的方式來創建,這樣會動態創建多個PVC和PV并綁定。
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"
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
name: web
volumeMounts:
- name: disk-ssd
mountPath: /data
volumeClaimTemplates:
- metadata:
name: disk-ssd
spec:
accessModes: [ "ReadWriteOnce" ]
storageClassName: "alicloud-disk-ssd-hangzhou-b"
resources:
requests:
storage: 20Gi
您也可以通過控制臺的方式使用動態云盤卷,請參見通過控制臺使用動態云盤卷。