通過命令行使用動(dòng)態(tài)云盤卷
動(dòng)態(tài)存儲(chǔ)卷需要您手動(dòng)創(chuàng)建StorageClass,并在PVC中通過storageClassName來指定期望的云盤類型。
創(chuàng)建指定zoneId的StorageClass
創(chuàng)建并復(fù)制以下內(nèi)容到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
參數(shù)說明如下。
參數(shù)
描述
provisioner
配置為alicloud/disk,標(biāo)識(shí)StorageClass使用阿里云云盤provisioner插件創(chuàng)建。
type
標(biāo)識(shí)云盤類型,支持
cloud_efficiency
、cloud_ssd
、cloud_essd
、available
四種參數(shù),其中available
會(huì)對(duì)ESSD、SSD、高效云盤依次嘗試創(chuàng)建,直到創(chuàng)建成功。regionId
期望創(chuàng)建云盤的地域。
reclaimPolicy
云盤的回收策略,默認(rèn)為
Delete
,支持Retain
。如果數(shù)據(jù)安全性要求高,推薦使用Retain
方式以免誤刪。zoneId
期望創(chuàng)建云盤的可用區(qū)。
如果是多可用區(qū)的情況,
zoneId
可同時(shí)配置多個(gè),示例如下:zoneId: cn-hangzhou-a,cn-hangzhou-b,cn-hangzhou-c
encrypted
可選參數(shù)。創(chuàng)建的云盤是否加密,默認(rèn)情況是
false
,創(chuàng)建的云盤不加密。執(zhí)行以下命令,創(chuàng)建StorageClass。
kubectl apply -f storage-class.yaml
創(chuàng)建延遲綁定的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
,這時(shí)創(chuàng)建的PV和Disk-Controller組件所在節(jié)點(diǎn)的Zone是相同的。如果配置的StorageClass沒有
WaitForFirstConsumer
,但是配置了zoneid
,這時(shí)創(chuàng)建的PV會(huì)根據(jù)zoneid
的配置,輪詢使用其中的zoneid
。如果使用WaitForFirstConsumer,會(huì)根據(jù)消費(fèi)此PVC的Pod所調(diào)度的節(jié)點(diǎn)創(chuàng)建云盤,即在Pod調(diào)度的可用區(qū)創(chuàng)建云盤。
創(chuàng)建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
默認(rèn)選項(xiàng):
在多可用區(qū)的集群中,需要您手動(dòng)創(chuàng)建上述StorageClass,這樣可以更準(zhǔn)確地定義所需要云盤的可用區(qū)信息。
集群默認(rèn)提供了以下幾種StorageClass,可以在單可用區(qū)類型的集群中使用。
alicloud-disk-efficiency:高效云盤。
alicloud-disk-ssd:SSD云盤。
alicloud-disk-essd:ESSD云盤。
alicloud-disk-available:提供高可用選項(xiàng),優(yōu)先創(chuàng)建SSD云盤;如果SSD云盤售盡,則創(chuàng)建高效云盤。
重要對(duì)于alicloud-disk-controller v1.14.8.44-c23b62c5-aliyun之前的版本,優(yōu)先創(chuàng)建ESSD云盤;如果ESSD云盤售盡,則創(chuàng)建SSD云盤;如果SSD云盤售盡,則創(chuàng)建高效云盤。
alicloud-disk-topology:使用延遲綁定的方式創(chuàng)建云盤。
使用云盤創(chuàng)建多實(shí)例StatefulSet
使用volumeClaimTemplates的方式來創(chuàng)建,這樣會(huì)動(dòng)態(tài)創(chuàng)建多個(gè)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
您也可以通過控制臺(tái)的方式使用動(dòng)態(tài)云盤卷,請(qǐng)參見通過控制臺(tái)使用動(dòng)態(tài)云盤卷。