全部產品
Search
文件中心

:通過命令列使用動態雲端硬碟卷

更新時間:Jun 19, 2024

動態儲存裝置卷需要您手動建立StorageClass,並在PVC中通過storageClassName來指定期望的雲端硬碟類型。

建立指定zoneId的StorageClass

  1. 建立並複製以下內容到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_efficiencycloud_ssdcloud_essdavailable四種參數,其中available會對ESSD、SSD、高效雲端硬碟依次嘗試建立,直到建立成功。
    regionId期望建立雲端硬碟的地區。
    reclaimPolicy雲端硬碟的回收策略,預設為Delete,支援Retain。如果資料安全性要求高,推薦使用Retain方式以免誤刪。
    zoneId期望建立雲端硬碟的可用性區域。
    如果是多可用性區域的情況,zoneId可同時配置多個,樣本如下:
    zoneId: cn-hangzhou-a,cn-hangzhou-b,cn-hangzhou-c
    encrypted選擇性參數。建立的雲端硬碟是否加密,預設情況是false,建立的雲端硬碟不加密。
  2. 執行以下命令,建立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

您也可以通過控制台的方式使用動態雲端硬碟卷,請參見通過控制台使用動態雲端硬碟卷