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

使用CNFS管理CPFS隔離存儲卷

為提升CPFS文件系統的性能,容器服務ACK支持使用CNFS(Container Network File System)托管CPFS文件系統,對文件系統層獨立管理。本文介紹如何通過CNFS的隔離存儲卷方式,掛載NFS和EFC客戶端使用CPFS文件系統。

索引

前提條件

  • 已創建Kubernetes集群,Kubernetes版本為v1.20及以上,且存儲插件選擇為CSI。具體操作,請參見創建ACK托管集群

  • 已確保CSI-Plugin和CSI-Provisioner組件版本為v1.24.11-5221f79-aliyun及以上。關于升級CSI-Plugin和CSI-Provisioner組件的操作,請參見管理CSI組件

  • 已確保storage-operator組件版本為v1.24.105-825188d-aliyun及以上。關于升級storage-operator組件的操作,請參見管理組件

  • 已通過kubectl工具連接Kubernetes集群。具體操作,請參見獲取集群KubeConfig并通過kubectl工具連接集群

  • 已創建CPFS文件系統和對應的協議服務,并獲取掛載點地址。具體操作,請參見創建文件系統創建協議服務并獲取掛載地址

    重要
    • 創建的CPFS文件系統和集群必須在同一VPC下。

    • CPFS的協議服務掛載點和集群建議在同一交換機下,以提升使用性能。

步驟一:安裝客戶端依賴并重啟CSI-Plugin組件

  1. 執行以下命令,查看集群中是否存在名為csi-plugin的ConfigMap。

    kubectl get configmap csi-plugin -nkube-system

    預期輸出:

    NAME         DATA   AGE
    csi-plugin   X      6d22h
  2. 執行以下命令,對名稱為csi-plugin的ConfigMap進行更新操作。

    kubectl edit configmap csi-plugin -nkube-system
  3. 執行以下命令,在ConfigMap文件中新增cnfs-client-properties字段,并安裝客戶端依賴。

    cat <<EOF | kubectl apply -f -
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: csi-plugin
      namespace: kube-system
    data:
      cnfs-client-properties: |
        cpfs-efc=true   # csi-plugin啟動時會安裝相關依賴。
    EOF
  4. 執行以下命令,重啟CSI-Plugin組件。

    kubectl -n kube-system rollout restart daemonset csi-plugin

步驟二:使用NFS和EFC客戶端掛載CPFS文件系統

使用NFS客戶端掛載CPFS文件系統

  1. 使用以下YAML文件,創建一個CNFS托管CPFS文件系統,通過CNFS的隔離卷方式使用NFS客戶端掛載CPFS文件系統,同時將隔離存儲卷綁定到工作負載StatefulSet中。

    展開查看所需的YAML文件

    # 創建CNFS、StorageClass和StatefulSet對象。
    cat << EOF | kubectl apply -f -
    apiVersion: storage.alibabacloud.com/v1beta1
    kind: ContainerNetworkFileSystem
    metadata:
      name: cnfs-nfs-cpfs
    spec:
      type: cpfs
      reclaimPolicy: Retain
      parameters:
        protocolServer: cpfs-xxxx.xxxx.cpfs.aliyuncs.com # 填寫CPFS的協議服務的掛載點域名。
        useClient: NFSClient  # 使用NFS客戶端進行掛載。
    ---
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: cnfs-nfs-cpfs-sc
    mountOptions:
      - nolock,tcp,noresvport
      - vers=3
    parameters:
      volumeAs: subpath
      containerNetworkFileSystem: "cnfs-nfs-cpfs"  # 引用創建的CNFS對象cnfs-nfs-cpfs。
      path: "/share"
    provisioner: nasplugin.csi.alibabacloud.com
    reclaimPolicy: Delete
    allowVolumeExpansion: true
    ---
    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: cnfs-nfs-cpfs-sts
    spec:
      selector:
        matchLabels:
          app: busybox
      serviceName: "busybox"
      replicas: 2
      template:
        metadata:
          labels:
            app: busybox
        spec:
          containers:
          - name: busybox
            image: busybox
            command: ["/bin/sh"]
            args: ["-c", "sleep 3600;"]
            volumeMounts:
            - name: pvc
              mountPath: /data
      volumeClaimTemplates:
      - metadata:
          name: pvc
        spec:
          accessModes: [ "ReadWriteOnce" ]
          storageClassName: "cnfs-nfs-cpfs-sc"
          resources:
            requests:
              storage: 50Gi
    EOF
  2. 執行以下命令,查看CNFS是否為可用狀態。

    kubectl get cnfs cnfs-nfs-cpfs -oyaml | grep status

    預期輸出:

    status:
        status: Ready
      status: Available

    預期輸出表明,CNFS狀態為Available可用狀態。

  3. 執行以下命令,查看PVC是否為綁定狀態。

    kubectl get pvc -owide | grep cnfs-nfs-cpfs-sc

    預期輸出:

    pvc-cnfs-nfs-cpfs-sts-0   Bound    nas-38727f0c-58c7-40df-b2e2-80537fcd74ae   50Gi       RWO            cnfs-nfs-cpfs-sc   66s     Filesystem
    pvc-cnfs-nfs-cpfs-sts-1   Bound    nas-ead04f09-ca37-408c-a50d-17e609fd48cf   50Gi       RWO            cnfs-nfs-cpfs-sc   4m50s   Filesystem

    預期輸出表明,PVC狀態為Bound綁定狀態。

  4. 執行以下命令,查看Pod是否為運行狀態。

    kubectl get sts cnfs-nfs-cpfs-sts -owide

    預期輸出:

    NAME                READY   AGE   CONTAINERS   IMAGES
    cnfs-nfs-cpfs-sts   2/2     98s   busybox      busybox
  5. 執行以下命令,查看其中一個Pod是否掛載成功。

    kubectl exec cnfs-nfs-cpfs-sts-0 -- mount | grep nfs

    預期輸出:

    cpfs-03129888b1d5c6e7-031b038b4345e7cen.cn-beijing.cpfs.aliyuncs.com:/share/nas-e223798f-dccc-4453-be19-72140884f642 on /data type nfs (rw,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,nolock,noresvport,proto=tcp,port=30000,timeo=600,retrans=2,sec=sys,mountaddr=127.0.1.255,mountvers=3,mountport=30000,mountproto=tcp,local_lock=all,addr=127.0.1.255)

    預期輸出表明,CNFS使用NFS客戶端已成功掛載CPFS文件系統。

使用EFC客戶端掛載CPFS文件系統

  1. 使用以下YAML文件,創建一個CNFS托管CPFS文件系統,通過CNFS的隔離卷方式使用EFC客戶端掛載CPFS文件系統,同時將隔離存儲卷綁定到工作負載StatefulSet中。

    展開查看所需的YAML文件

    # 創建CNFS、StorageClass和StatefulSet對象。
    cat << EOF | kubectl apply -f -
    apiVersion: storage.alibabacloud.com/v1beta1
    kind: ContainerNetworkFileSystem
    metadata:
      name: cnfs-efc-cpfs
    spec:
      type: cpfs
      reclaimPolicy: Retain
      parameters:
        protocolServer: cpfs-xxxx.xxxx.cpfs.aliyuncs.com # 填寫CPFS的協議服務的掛載點域名。
        useClient: EFCClient  # 使用EFC客戶端進行掛載。
    ---
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: cnfs-efc-cpfs-sc
    mountOptions:
      - nolock,tcp,noresvport
      - vers=3
    parameters:
      volumeAs: subpath
      containerNetworkFileSystem: "cnfs-efc-cpfs" # 引用創建的CNFS對象cnfs-efc-cpfs。
      path: "/share"
    provisioner: nasplugin.csi.alibabacloud.com
    reclaimPolicy: Delete
    allowVolumeExpansion: true
    ---
    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: cnfs-efc-cpfs-sts
    spec:
      selector:
        matchLabels:
          app: busybox
      serviceName: "busybox"
      replicas: 2
      template:
        metadata:
          labels:
            app: busybox
        spec:
          containers:
          - name: busybox
            image: busybox
            command: ["/bin/sh"]
            args: ["-c", "sleep 3600;"]
            volumeMounts:
            - name: pvc
              mountPath: /data
      volumeClaimTemplates:
      - metadata:
          name: pvc
        spec:
          accessModes: [ "ReadWriteOnce" ]
          storageClassName: "cnfs-efc-cpfs-sc"
          resources:
            requests:
              storage: 50Gi
    EOF
  2. 執行以下命令,查看CNFS是否為可用狀態。

    kubectl get cnfs cnfs-efc-cpfs -oyaml | grep status

    預期輸出:

    status:
        status: Ready
      status: Available

    預期輸出表明,CNFS狀態為Available可用狀態。

  3. 執行以下命令,查看PVC是否為綁定狀態。

    kubectl get pvc -owide | grep cnfs-efc-cpfs-sc

    預期輸出:

    pvc-cnfs-efc-cpfs-sts-0   Bound    nas-38727f0c-58c7-40df-b2e2-80537fcd74ae   50Gi       RWO            cnfs-efc-cpfs-sc   66s     Filesystem
    pvc-cnfs-efc-cpfs-sts-1   Bound    nas-ead04f09-ca37-408c-a50d-17e609fd48cf   50Gi       RWO            cnfs-efc-cpfs-sc   4m50s   Filesystem

    預期輸出表明,PVC狀態為Bound綁定狀態。

  4. 執行以下命令,查看Pod是否為運行狀態。

    kubectl get sts cnfs-efc-cpfs-sts -owide

    預期輸出:

    NAME                READY   AGE   CONTAINERS   IMAGES
    cnfs-efc-cpfs-sts   2/2     198s   busybox      busybox
  5. 執行以下命令,查看其中一個Pod是否掛載成功。

    kubectl exec cnfs-efc-cpfs-sts-0 -- mount | grep efc

    預期輸出:

    bindroot-90f07-x6ducKqW:cpfs-03129888b1d5c6e7-031b038b4345e7cen.cn-beijing.cpfs.aliyuncs.com:/share/nas-e502f35f-2d42-4292-bf2c-c39885c38820 on /data type alifuse.aliyun-alinas-efc (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other)

    預期輸出表明,CNFS使用EFC客戶端已成功掛載CPFS文件系統。

步驟三:查看持久化數據是否寫入成功

  1. 執行以下命令,將1G的臨時文件寫入其中一個名稱為cnfs-xxx-cpfs-sts-0的Pod中,并查看是否寫入成功。

    kubectl exec cnfs-xxx-cpfs-sts-0 -- sh -c "dd if=/dev/zero of=/data/1G.tmpfile bs=1G count=1;ls -alrth /data"

    預期輸出:

    total 1G
    drwxr-xr-x    2 root     root        4.0K Apr 19 12:42 .
    drwxr-xr-x    1 root     root        4.0K Apr 19 12:42 ..
    -rw-r--r--    1 root     root        1.0G Apr 19 12:50 1G.tmpfile
    1+0 records in
    1+0 records out
    1073741824 bytes (1.0GB) copied, 2.729605 seconds, 375.1MB/s
  2. 執行以下命令,在名稱為cnfs-xxx-cpfs-sts-1的Pod中,確認并不存在該臨時文件。

    kubectl exec cnfs-xxx-cpfs-sts-1 -- sh -c "ls -alrth /data"

    預期輸出:

    total 5K
    drwxr-xr-x    2 root     root        4.0K Apr 19 12:42 .
    drwxr-xr-x    1 root     root        4.0K Apr 19 12:42 ..

    預期輸出表明,名稱為cnfs-xxx-cpfs-sts-0的Pod與名稱為cnfs-xxx-cpfs-sts-1的Pod中,所使用的存儲卷相互隔離。