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

使用NAS實現共享存儲和持久化存儲-Flexvolume

NAS提供了共享存儲和持久化存儲的服務,滿足您需要多個Pod共享數據的應用場景。本文介紹如何使用NAS實現共享存儲和持久化存儲。

前提條件

背景信息

NAS支持同時被多個Pod掛載,此時多個Pod可能同時修改相同數據,需要應用自行實現數據的同步。

有狀態服務-NAS的使用場景:

  • 對磁盤I/O要求較高的應用。

  • 讀寫性能相對于對象存儲OSS高。

  • 可實現跨主機文件共享,例如可作為文件服務器。

有狀態服務-NAS的使用方式:

  1. 手動創建文件系統,并添加掛載點。

  2. 手動創建PV及PVC。

本文介紹如何利用阿里云提供的flexvolume插件,通過PV或PVC的方式使用阿里云NAS。

創建PV

  1. 創建pv-nas.yaml文件。

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: pv-nas
      labels:
        alicloud-pvname: pv-nas
    spec:
      capacity:
        storage: 5Gi
      accessModes:
        - ReadWriteMany
      flexVolume:
        driver: "alicloud/nas"
        options:
          server: "***-**.cn-hangzhou.nas.aliyuncs.com"   # 請替換為您實際的掛載點。
          path: "/k8s1"
          vers: "4.0"

    參數

    描述

    alicloud-pvname

    PV的名稱。

    server

    NAS的掛載點。可在文件存儲控制臺,單擊左側導航欄的文件系統列表,選擇目標文件系統,單擊操作管理,在管理頁面單擊左側掛載使用,在掛載點區域,掛載地址即為NAS數據盤的掛載點。

    path

    NAS的掛載目錄,支持掛載NAS的子目錄,當子目錄不存在時,會在NAS上自動創建子目錄并掛載。

    vers

    (可選)NFS掛載協議的版本號,支持3和4.0,默認情況是3。

    mode

    (可選)掛載目錄的訪問權限,默認情況是不配置。

    說明
    • 掛載NAS的根目錄無法配置訪問權限。

    • 當NAS中數據量很大時,配置mode會導致掛載非常慢,甚至掛載失敗,不建議配置。

  2. 執行以下命令,創建PV。

    kubectl create -f pv-nas.yaml

預期結果:

  1. 登錄容器服務管理控制臺

  2. 在控制臺左側導航欄中,單擊集群

  3. 集群列表頁面中,單擊目標集群名稱或者目標集群右側操作列下的詳情

  4. 在集群管理頁左側導航欄中,選擇存儲 > 存儲卷,可以看到剛剛創建的PV。創建PV

創建PVC

創建NAS存儲聲明PVC,使用selector篩選PV,精確配置PVC和PV的綁定關系。

  1. 創建pvc-nas.yaml文件。

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: pvc-nas
    spec:
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 5Gi
      selector:
        matchLabels:
          alicloud-pvname: pv-nas
  2. 執行以下命令,創建PVC。

    kubectl create -f pvc-nas.yaml

預期結果:

  1. 登錄容器服務管理控制臺

  2. 在控制臺左側導航欄中,單擊集群

  3. 集群列表頁面中,單擊目標集群名稱或者目標集群右側操作列下的詳情

  4. 在集群管理頁左側導航欄中,選擇存儲 > 存儲聲明,可以看到剛剛創建的PVC。創建PVC

創建應用

  1. 創建nas.yaml文件。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nas-static
      labels:
        app: nginx
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx
            ports:
            - containerPort: 80
            volumeMounts:
              - name: pvc-nas
                mountPath: "/data"
          volumes:
            - name: pvc-nas
              persistentVolumeClaim:
                claimName: pvc-nas
  2. 執行以下命令,創建Deployment。

    kubectl create -f nas.yaml

預期結果:

  1. 登錄容器服務管理控制臺

  2. 在控制臺左側導航欄中,單擊集群

  3. 集群列表頁面中,單擊目標集群名稱或者目標集群右側操作列下的應用管理

  4. 在目標集群頁面下,選擇左側導航欄的工作負載 > 無狀態,可以看到剛剛創建的Deployment。創建應用

NAS的共享存儲

  1. 執行以下命令,查看部署的Deployment所在Pod的名稱。

    kubectl get pod

    預期輸出:

    NAME                             READY   STATUS    RESTARTS   AGE
    nas-static-f96b6b5d7-r****       1/1     Running   0          9m
    nas-static-f96b6b5d7-w****       1/1     Running   0          9m
  2. 執行以下命令,查看/data路徑下的文件。

    kubectl exec nas-static-f96b6b5d7-r**** -- ls /data                    

    預期輸出:

    kubectl exec nas-static-f96b6b5d7-w**** -- ls /data                   
    說明

    /data路徑下為空,沒有文件。

  3. 執行以下命令,在任意一個Pod的/data路徑下創建文件nas

    kubectl exec nas-static-f96b6b5d7-r**** -- touch /data/nas
  4. 查看Pod下的文件。

    執行以下命令,查看Pod的/data路徑下的文件。

    kubectl exec nas-static-f96b6b5d7-r**** -- ls /data

    預期輸出:

    nas

    執行以下命令,查看另一個Pod的/data路徑下的文件。

    kubectl exec nas-static-f96b6b5d7-w**** -- ls /data

    預期輸出:

    nas
    說明

    在任意一個Pod的/data下創建的文件,兩個Pod下的/data路徑下均存在此文件,說明兩個Pod共享一個NAS。

NAS的持久化存儲

  1. 執行以下命令,刪除該應用的所有Pod。

    kubectl delete pod nas-static-f96b6b5d7-r**** nas-static-f96b6b5d7-wthmb

    預期輸出:

    pod "nas-static-f96b6b5d7-r****" deleted
    pod "nas-static-f96b6b5d7-w****" deleted
  2. 執行以下命令,查看Pod刪除及Kubernetes重建Pod的過程。

    kubectl get pod -w -l app=nginx

    預期輸出:

    NAME                             READY   STATUS              RESTARTS       AGE
    nas-static-f96b6b5d7-r****       1/1     Running             0              27m
    nas-static-f96b6b5d7-w****       1/1     Running             0              27m
    nas-static-f96b6b5d7-r****       1/1     Terminating         0              28m
    nas-static-f96b6b5d7-w****       0/1     Pending             0              0s
    nas-static-f96b6b5d7-w****       0/1     Pending             0              0s
    nas-static-f96b6b5d7-w****       0/1     ContainerCreating   0              0s
    nas-static-f96b6b5d7-w****       1/1     Terminating         0              28m
    nas-static-f96b6b5d7-n****       0/1     Pending             0              0s
    nas-static-f96b6b5d7-n****       0/1     Pending             0              0s
    nas-static-f96b6b5d7-n****       0/1     ContainerCreating   0              0s
    nas-static-f96b6b5d7-r****       0/1     Terminating         0              28m
    nas-static-f96b6b5d7-w****       0/1     Terminating         0              28m
    nas-static-f96b6b5d7-r****       0/1     Terminating         0              28m
    nas-static-f96b6b5d7-r****       0/1     Terminating         0              28m
    nas-static-f96b6b5d7-w****       1/1     Running             0              10s
    nas-static-f96b6b5d7-w****       0/1     Terminating         0              28m
    nas-static-f96b6b5d7-w****       0/1     Terminating         0              28m
    nas-static-f96b6b5d7-n****       1/1     Running             0              17s
  3. 執行以下命令,查看Kubernetes重建的Pod名稱。

    kubectl get pod

    預期輸出:

    NAME                             READY   STATUS    RESTARTS   AGE
    nas-static-f96b6b5d7-n****       1/1     Running   0          21s
    nas-static-f96b6b5d7-w****       1/1     Running   0          21s
  4. 查看Pod下的文件。

    執行以下命令,查看Pod的/data路徑下的文件。

    kubectl exec nas-static-f96b6b5d7-n**** -- ls /data

    預期輸出:

    nas

    執行以下命令,查看另一個Pod的/data路徑下的文件。

    kubectl exec nas-static-f96b6b5d7-w**** -- ls /data

    預期輸出:

    nas
    說明

    剛剛創建的文件nas并沒有被刪除,說明NAS的數據可持久保存。