動態儲存裝置卷需要您手動建立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
您也可以通過控制台的方式使用動態雲端硬碟卷,請參見通過控制台使用動態雲端硬碟卷。