全部產品
Search
文件中心

File Storage NAS:通過Volume方式掛載NAS

更新時間:Sep 05, 2024

本文介紹如何通過Kubernetes內建的Volume功能,將NAS檔案系統掛載至Kubernetes叢集進行訪問。

前提條件

  • 已建立NFS協議檔案系統。具體操作,請參見建立檔案系統

    若需要加密NAS檔案系統中的資料,請在建立NAS檔案系統時配置加密類型。

  • 已添加掛載點。具體操作,請參見管理掛載點

  • 已自建Kubernetes叢集且叢集版本為1.16及以上版本。

  • 已確認Pod調度節點的安全性群組規則開放111連接埠和2049連接埠。具體操作,請參見添加安全性群組規則

  • 如果您的Kubernetes叢集部署線上下IDC,請確保已打通IDC與阿里雲的網路。您可通過阿里雲Express Connect、Smart Access Gateway或者VPN網關打通IDC和雲上網路。相關參考如下:

使用限制

NAS檔案系統在掛載連通性、檔案系統數量及協議類型等方面存在相應的約束條件。詳細資料,請參見使用限制

重要

在沒有卸載NAS檔案系統前,務必不要刪除NAS掛載點,否則會造成作業系統無響應。

操作步驟

  1. 登入自建Kubernetes叢集節點。

  2. 配置Kubernetes節點。

    說明

    您需要為Kubernetes叢集中的每個節點都進行配置。如果該叢集有新增節點時,您也需要為其配置以下操作然後再將新增節點加入到Kubernetes叢集中。

    1. 安裝NFS用戶端。具體操作,請參見安裝NFS用戶端

    2. 執行以下命令,配置/etc/nfsmount.conf檔案。

      cat <<EOF >> /etc/nfsmount.conf
      [ Server "file-system-id.region.nas.aliyuncs.com" ]
      vers=3
      Proto=tcp
      Lock=False
      resvport=False
      rsize=1048576
      wsize=1048576
      hard=True
      timeo=600
      retrans=2
      EOF

      其中,file-system-id.region.nas.aliyuncs.com為NAS檔案系統掛載點地址,請根據實際值替換。您可以在NAS控制台,單擊目標檔案系統,然後單擊掛載使用,將滑鼠放置在掛載地址列的掛載點表徵圖上擷取掛載點地址。

      說明
      • 僅推薦使用NFS v3協議掛載NAS檔案系統。

      • 以上配置參數均為必填參數,除file-system-id.region.nas.aliyuncs.com參數和vers協議版本可修改外,其他參數無需修改。

    3. 驗證檔案系統與Kubernetes節點網路連通。

      1. 執行以下命令,嘗試掛載NFS協議檔案系統。

        mount -t nfs file-system-id.region.nas.aliyuncs.com:/ /mnt 

        其中,file-system-id.region.nas.aliyuncs.com為NAS檔案系統掛載點地址,請根據實際值替換。

        如果掛載失敗,請先確認NAS掛載點網域名稱是否能夠ping通,並且是否連通2049連接埠。如果以上問題不存在,請使用偵查工具進行排查。具體操作,請參見Linux掛載NFS檔案系統掛載失敗排查

      2. 執行以下命令,查看掛載資訊。

        mount | grep nfs | grep mnt 

        如果掛載參數包含vers=3、hard、noresvport、nolock等資訊,則表示網路連通。參數資訊

        確認網路連通後,請執行umount /mnt刪除掛載的NFS協議檔案系統。

  3. 啟動應用Pod通過Volume掛載使用NFS檔案系統。

    本文以啟動一個nginx pod為例介紹通過Volume掛載使用NFS檔案系統。

    1. 配置nginx.yaml

      cat  << EOF > ./nginx.yaml
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: nginx-deployment
      spec:
        selector:
          matchLabels:
            app: nginx
        replicas: 1
        template:
          metadata:
            labels:
              app: nginx
          spec:
            containers:
            - name: nginx
              image: nginx:1.14.2
              ports:
              - containerPort: 80
              volumeMounts:
              - mountPath: /data
                name: test-nfs
            volumes:
            - name: test-nfs
              nfs:
                server: file-system-id.region.nas.aliyuncs.com    # 阿里雲NAS檔案系統掛載點地址,請根據實際值替換。例如,7bexxxxxx-xxxx.ap-southeast-1.nas.aliyuncs.com。
                path: /    # NAS檔案系統目錄路徑。該目錄必須為已經存在的目錄或根目錄。通用型NAS的根目錄為“/”,極速型NAS的根目錄為“/share”。
      EOF
    2. 啟用nginx pod使用NFS檔案系統。

      kubectl apply -f ./nginx.yaml
  4. 檢查Pod是否正常啟動及掛載NFS檔案系統成功。

    1. 執行命令,查看Pod運行狀態。

      • 執行命令

        kubectl get pods | grep nginx 
      • 返回資訊

        如果Pod運行狀態為Running,則表示正常啟動。

        image

    2. 執行以下命令,查看掛載結果。

      • 執行命令

        kubectl exec nginx-deployment-9b9b684f5-mgrkh  -- df -h /data
      • 返回資訊

        如果返回如下類似資訊,則表示掛載檔案系統成功。

        image