日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

使用云盤動態存儲卷實現持久化存儲-Flexvolume

當容器發生宕機故障時,有狀態服務容器存儲的業務數據存在著丟失和不可靠等風險。使用持久化存儲可以解決該問題。本文介紹如何使用云盤動態存儲卷實現持久化存儲。

背景信息

動態云盤的使用場景:

沒有購買云盤,在應用部署時自動購買云盤的情況。

動態云盤的使用方式:
  1. 手動創建PVC,在PVC中聲明StorageClass。
  2. 部署應用時通過StorageClass自動創建PV。

前提條件

Provisioner插件

容器服務Kubernetes版在創建集群時,默認安裝Provisioner插件。

創建StorageClass

阿里云容器服務Kubernetes在系統初始化的時候會默認創建4個StorageClass,且使用參數的默認情況。同時這4個StorageClass僅適用于單可用區集群,若是多可用區集群,則需要您創建StorageClass。這4個StorageClass分別為:
  • alicloud-disk-common:自動創建普通云盤。
  • alicloud-disk-efficiency:自動創建高效云盤。
  • alicloud-disk-ssd:自動創建SSD云盤。
  • alicloud-disk-available:提供高可用選項,先嘗試自動創建SSD云盤;如果相應可用區的SSD云盤資源售盡,再嘗試自動創建高效云盤。
  1. 創建storageclass.yaml文件。
    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
      name: alicloud-disk-ssd-hangzhou-b
    provisioner: alicloud/disk
    reclaimPolicy: Retain
    parameters:
      type: cloud_ssd
      regionId: cn-hangzhou
      zoneId: cn-hangzhou-b
      fstype: "ext4"
      readonly: "false"
    參數描述
    provisioner動態云盤配置為alicloud/disk,標識使用provisioner插件自動創建阿里云云盤。
    reclaimPolicy云盤的回收策略。支持DeleteRetain,默認情況為Delete
    說明 如果配置為Delete,刪除PVC時,云盤會一起刪除,云盤上的數據不可恢復。
    type自動創建云盤的類型,支持cloudcloud_efficiencycloud_ssdavailable
    regionId(可選)自動創建云盤所在的地域,與集群的地域相同。
    zoneId(可選)自動創建云盤所在的區域。
    • 單可用區集群,與集群所在區域相同。
    • 多可用區集群,zoneid可同時配置多個,例如:
      zoneid: cn-hangzhou-a,cn-hangzhou-b,cn-hangzhou-c
    fstype(可選)自動創建云盤所使用的文件系統,默認情況為ext4
    readonly(可選)掛載自動創建云盤的權限是否為可讀,支持true:云盤具有只讀權限,false:云盤具有可讀可寫權限,默認情況為false
    encrypted(可選)自動創建的云盤是否加密,支持true:加密,false:不加密,默認情況為false
  2. 執行以下命令,創建StorageClass。
    kubectl create -f storageclass.yaml

創建PVC

  1. 創建pvc-ssd.yaml文件。
    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: disk-ssd
    spec:
      accessModes:
        - ReadWriteOnce
      storageClassName: alicloud-disk-ssd-hangzhou-b
      resources:
        requests:
          storage: 20Gi
  2. 執行以下命令,創建PVC。
    kubectl create -f pvc-ssd.yaml

在目標集群的頁面下單擊左側導航欄的存儲 > 存儲聲明,可以看到該PVC綁定的存儲類型為StorageClass中聲明的alicloud-disk-ssd-hangzhou-b,并且關聯存儲卷。

創建應用

  1. 創建pvc-dynamic.yaml文件。
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-dynamic
      labels:
        app: nginx
    spec:
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx
            volumeMounts:
              - name: disk-pvc
                mountPath: "/data"
          volumes:
            - name: disk-pvc
              persistentVolumeClaim:
                claimName: disk-ssd
  2. 執行以下命令,創建Deployment。
    kubectl create -f nginx-dynamic.yaml
在目標集群頁面下單擊左側導航欄的工作負載 > 無狀態,可以看到剛剛創建的Deployment。deployment

動態云盤的持久化存儲

  1. 執行以下命令,查看部署的Deployment所在Pod的名稱。
    kubectl get pod | grep dynamic

    預期輸出:

    nginx-dynamic-5c74594ccb-zl9pf     2/2     Running     0          3m
  2. 執行以下命令,查看/data路徑下是否掛載了新的云盤。
    kubectl exec nginx-dynamic-5c74594ccb-zl9pf -- df | grep data

    預期輸出:

    /dev/vdh        20511312    45080  20449848   1% /data
  3. 執行以下命令,查看/data路徑下的文件。
    kubectl exec nginx-dynamic-5c74594ccb-zl9pf -- ls /data

    預期輸出:

    lost+found
  4. 執行以下命令,在/data路徑下創建文件dynamic
    kubectl exec nginx-dynamic-5c74594ccb-zl9pf -- touch /data/dynamic
  5. 執行以下命令,查看/data路徑下的文件。
    kubectl exec nginx-dynamic-5c74594ccb-zl9pf -- ls /data

    預期輸出:

    dynamic
    lost+found
  6. 執行以下命令,刪除名稱為nginx-dynamic-5c74594ccb-zl9pf的Pod。
    kubectl delete pod nginx-dynamic-5c74594ccb-zl9pf

    預期輸出:

    pod "nginx-dynamic-5c74594ccb-zl9pf" deleted
  7. 同時在另一個窗口中,執行以下命令,查看Pod刪除及Kubernetes重建Pod的過程。
    kubectl get pod -w -l app=nginx
    預期輸出:
    NAME                               READY   STATUS    RESTARTS   AGE
    nginx-dynamic-5c74594ccb-zl9pf     2/2     Running   0          6m48s
    nginx-dynamic-5c74594ccb-zl9pf   2/2   Terminating   0     7m32s
    nginx-dynamic-5c74594ccb-45sd4   0/2   Pending   0     0s
    nginx-dynamic-5c74594ccb-45sd4   0/2   Pending   0     0s
    nginx-dynamic-5c74594ccb-45sd4   0/2   Init:0/1   0     0s
    nginx-dynamic-5c74594ccb-zl9pf   0/2   Terminating   0     7m32s
    nginx-dynamic-5c74594ccb-zl9pf   0/2   Terminating   0     7m33s
    nginx-dynamic-5c74594ccb-zl9pf   0/2   Terminating   0     7m33s
    nginx-dynamic-5c74594ccb-45sd4   0/2   PodInitializing   0     5s
    nginx-dynamic-5c74594ccb-45sd4   2/2   Running   0     22s
  8. 執行以下命令,查看Kubernetes重建的Pod名稱。
    kubectl get pod 

    預期輸出:

    NAME                               READY   STATUS      RESTARTS   AGE
    nginx-dynamic-5c74594ccb-45sd4     2/2     Running     0          2m
  9. 執行以下命令,查看/data路徑下的文件,剛剛創建的文件dynamic并沒有被刪除,說明動態云盤的數據可持久保存。
    kubectl exec nginx-dynamic-5c74594ccb-45sd4 -- ls /data

    預期輸出:

    dynamic
    lost+found