全部產品
Search
文件中心

Container Service for Kubernetes:使用NAS靜態儲存卷

更新時間:Jan 22, 2026

NAS儲存卷提供資料持久化(Pod重建後資料不丟失)和資料共用(多Pod同時讀寫)能力。ACK支援將已有的NAS檔案系統,以靜態儲存卷的方式掛載給工作負載使用。

  • 靜態儲存卷:需預先建立PV來代表已有的儲存資源(如NAS檔案系統)。應用通過建立PVC來“匹配”並申請使用此PV。常用於納管存量儲存資源。但其綁定的PVC預設不支援線上擴容。

    如需使用儲存卷自動擴容,請選擇使用NAS動態儲存裝置卷使用CNFS自動擴容NAS儲存卷
  • 動態儲存裝置卷:無需預先建立PV。應用建立PVC時,系統會根據PVC指定的StorageClass,按需自動建立一個全新的儲存卷及與之對應的PV。此模式更靈活,且支援儲存卷擴容。

流程指引

在ACK叢集中掛載NAS靜態儲存卷主要流程如下。

image
  1. 建立PV:在叢集中“註冊”已有的NAS檔案系統,聲明其掛載地址(根目錄或特定子目錄)、容量、訪問模式等。

  2. 建立PVC:應用通過PVC來“申請”使用登入的儲存資源。PVC會與合格PV自動綁定。

  3. 在應用中掛載:將已綁定的PVC掛載到應用Pod中,作為容器內的一個持久化目錄。

準備工作

  • 已安裝csi-plugin組件和csi-provisioner組件。

    CSI組件預設安裝,請確保未手動卸載。可在組件管理頁面查看安裝情況。建議升級CSI組件至最新版本。
  • 已建立NAS檔案系統,且滿足以下條件。否則請重新建立檔案系統或者使用NAS動態儲存裝置卷

    NAS在掛載連通性、檔案系統數量、協議類型等方面存在使用限制
    • 協議類型:僅支援NFS。

    • Virtual Private Cloud:NAS檔案系統需與叢集VPC保持一致。NAS支援跨可用性區域掛載,不支援跨VPC掛載。

    • 掛載點:添加與叢集處於同一VPC內且狀態可用的掛載點,具體操作請參見管理掛載點。請記錄掛載點地址。

    • (可選)加密類型:如需加密儲存卷資料,請在建立NAS檔案系統時配置加密類型。

注意事項

  • 禁止刪除掛載點:儲存卷使用期間,請勿在NAS控制台刪除其對應的掛載點,以免導致節點I/O異常。

  • 並發寫入:NAS為共用儲存。當多個Pod同時掛載一個儲存卷時,應用自身需要處理並發寫入可能帶來的資料一致性問題。

    關於NAS並發寫入的一些限制條件,請參見如何避免多進程或多用戶端並發寫同一記錄檔可能出現的異常?讀寫訪問檔案類問題
  • 掛載效能:若在應用中配置了securityContext.fsgroup,kubelet會在掛載後遞迴執行chmodchown操作,可能導致Pod啟動時間顯著延長。

    如需最佳化,請參見NAS儲存卷FAQ

步驟一:建立PV

建立PV,在叢集中“註冊”已有的NAS檔案系統。

kubectl

  1. 參見以下內容建立pv-nas.yaml檔案。

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      # PV名稱,需在叢集內保持唯一
      name: pv-nas  
      # PV標籤,用於後續匹配PVC
      labels:  
        alicloud-pvname: pv-nas
    spec:
      capacity:
        # 容量聲明僅作標識,實際容量由NAS檔案系統決定
        storage: 5Gi  
      accessModes:
        - ReadWriteMany
      # PV回收策略
      persistentVolumeReclaimPolicy: Retain
      csi:
        # 驅動類型,使用NAS儲存卷時固定為此值
        driver: nasplugin.csi.alibabacloud.com  
        # 需與 metadata.name 保持一致
        volumeHandle: pv-nas   
        volumeAttributes:
          server: "0c47****-mpk25.cn-shenzhen.nas.aliyuncs.com"  # 替換為NAS掛載點地址
          # 待掛載的NAS子目錄,若不存在會自動建立
          path: "/csi"
      mountOptions:
      - nolock,tcp,noresvport
      - vers=3

    參數

    說明

    storage

    PV容量聲明。此聲明僅為PVC匹配依據,不限制實際可用容量。應用實際可用儲存上限為NAS檔案系統總容量。

    NAS實際容量上限由其規格決定,請參見通用型NAS極速型NAS

    accessModes

    配置訪問模式。可取值:

    • ReadWriteMany(預設):多節點讀寫。

    • ReadWriteOnce:單節點讀寫。

    • ReadOnlyMany:多節點唯讀。

    persistentVolumeReclaimPolicy

    PV的回收策略,即PVC被刪除後如何處理對應的PV及後端NAS資料。

    • Retain(推薦):刪除PVC後,PV進入Released狀態,後端NAS資料被完整保留,需手動刪除。

    • Delete:刪除PVC後,PV也會被刪除。需配合archiveOnDelete一起使用。靜態PV不支援archiveOnDelete,即使配置為Delete,刪除PVC時也不會真正刪除PV和NAS檔案。

      如需配置archiveOnDelete,請參見使用NAS動態儲存裝置卷

    driver

    驅動類型。使用阿里雲NAS CSI組件時固定為nasplugin.csi.alibabacloud.com

    volumeHandle

    PV在後端儲存系統中的唯一識別碼,需與PV Name(即metadata.name)保持一致。如需同時使用多個PV,則各個PV中該值須唯一。

    server

    NAS掛載點地址。

    關於如何查看掛載點地址,請參見管理掛載點

    path

    待掛載的NAS子目錄。如果未設定,則預設掛載到根目錄。

    如果NAS中沒有該目錄,系統會自動建立並進行掛載。
    • 通用型NAS:根目錄為/

    • 極速型NAS:根目錄為/share。掛載子目錄時,path需以/share開頭(如/share/data)。

    mountOptions

    NAS的掛載參數,包括NFS協議版本等。預設使用v3協議掛載,可通過vers=4.0方式指定協議版本。關於不同NAS類型支援的NFS協議,請參見NFS協議

  2. 建立PV。

    kubectl create -f pv-nas.yaml
  3. 查看PV狀態和屬性。

    kubectl get pv

    預期輸出:

    NAME     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM    STORAGECLASS     VOLUMEATTRIBUTESCLASS   REASON   AGE
    pv-nas   5Gi        RWX            Retain           Available                             <unset>                          25s

    預期輸出表明,PV 已成功建立,容量為 5Gi,當前處於Available狀態,即未被任何應用通過 PVC 佔用。

控制台

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集列表

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇儲存 > 儲存卷

  3. 儲存卷頁面,單擊建立,在彈出的對話方塊完成參數配置,然後單擊建立

    配置項

    說明

    儲存卷類型

    選擇NAS

    名稱

    PV名稱,在叢集內保持唯一。

    總量

    PV容量聲明。此聲明僅為PVC匹配依據,不限制實際可用容量。應用實際可用儲存上限為NAS檔案系統總容量。

    NAS實際容量上限由其規格決定,請參見通用型NAS極速型NAS

    訪問模式

    配置訪問模式。可取值:

    • ReadWriteMany:多節點讀寫。

    • ReadWriteOnce:單節點讀寫。

    是否使用CNFS

    是否使用容器網路檔案系統CNFS,利用其在自動化營運、緩衝加速、效能監控等方面提供的增強能力。

    如需使用CNFS管理已有NAS,請參見建立CNFS管理NAS檔案系統(推薦)

    掛載點網域名稱

    未開啟CNFS時可配置

    NAS掛載點地址。

    如需擷取地址,請參見管理掛載點
    • 選擇掛載點:選擇此前添加的掛載點地址。

    • 自訂:使用自訂網域名作為掛載地址。請確保已完成自訂網域名到目標NAS掛載點的解析配置。

    進階選項(選填)

    掛載路徑

    待掛載的NAS子目錄。如果未設定,則預設掛載到根目錄。

    如果NAS中沒有該目錄,系統會自動建立並進行掛載。
    • 通用型NAS:根目錄為/

    • 極速型NAS:根目錄為/share。掛載子目錄時,path需以/share開頭(如/share/data)。

    回收策略

    • Retain(預設):刪除PVC時,PV和NAS檔案不會被刪除,需手動刪除。

    • 刪除:刪除PVC後,PV也會被刪除。需配合archiveOnDelete一起使用。靜態PV不支援archiveOnDelete,即使配置為Delete,刪除PVC時也不會真正刪除PV和NAS檔案。

      如需配置archiveOnDelete,請參見使用NAS動態儲存裝置卷

    掛載選項

    NAS的掛載參數,包括NFS協議版本等。預設使用v3協議掛載,可通過vers=4.0方式指定協議版本。關於不同NAS類型支援的NFS協議,請參見NFS協議

    標籤

    PV的標籤。

    建立完成後,可在儲存卷頁面查看新建立的PV。

步驟二:建立PVC

建立PVC,為應用聲明其所需的持久化儲存容量。

kubectl

  1. 建立pvc-nas.yaml檔案,關聯此前建立的PV。

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: pvc-nas  # PVC名稱,需在命名空間內保持唯一
    spec:
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 5Gi
      selector:
        matchLabels:
          alicloud-pvname: pv-nas   # 通過標籤精確匹配此前建立的PV

    參數

    說明

    accessModes

    訪問模式。可取值:

    • ReadWriteMany(預設):多節點讀寫。

    • ReadWriteOnce:單節點讀寫。

    • ReadOnlyMany:多節點唯讀。

    storage

    聲明所需使用的儲存卷的容量。此處聲明的所需容量僅為 PV 匹配的依據,並非實際容量的限制。

    NAS實際容量上限由規格決定,請參見通用型NAS極速型NAS確認。

    matchLabels

    輸入PV標籤,用於關聯PV。

  2. 建立PVC。

    kubectl create -f pvc-nas.yaml
  3. 查看PVC狀態。

    kubectl get pvc

    預期輸出:

    NAME       STATUS   VOLUME    CAPACITY   ACCESS MODES   STORAGECLASS   VOLUMEATTRIBUTESCLASS   AGE
    pvc-nas    Bound    pv-nas    5Gi        RWX                           <unset>                 5s

    預期輸出表明,PVC已成功分配5Gi的儲存容量,綁定(Bound)到名為 pv-nas 的PV上,可被應用掛載和使用。

控制台

  1. 在叢集管理頁左側導覽列,選擇儲存 > 儲存聲明

  2. 儲存聲明頁面,單擊建立,按頁面提示完成PVC的配置和建立。

    配置項

    說明

    儲存宣告類型

    選擇NAS

    名稱

    PVC名稱,需在命名空間內保持唯一。

    分配模式

    選擇已有儲存卷。

    本文使用此前建立的PV。若未建立PV,可選擇分配模式建立儲存卷

    已有儲存卷

    選擇此前建立的PV。

    總量

    聲明所需使用的儲存卷的容量。此處聲明的所需容量僅為 PV 匹配的依據,並非實際容量的限制。

    NAS實際容量上限由規格決定,請參見通用型NAS極速型NAS確認。

    訪問模式

    訪問模式。可取值:

    • ReadWriteMany(預設):多節點讀寫。

    • ReadWriteOnce:單節點讀寫。

    • ReadOnlyMany:多節點唯讀。

步驟三:建立應用並掛載NAS

PVC建立後,可將其綁定的 PV 掛載到應用中。

kubectl

  1. 參見以下內容建立deploy.yaml,引用此前建立的PVC。

    該應用會建立2個Pod,掛載至同一NAS檔案系統,以便後續驗證NAS的共用儲存。

    展開查看YAML

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nas-test
      labels:
        app: nginx
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
            ports:
            - containerPort: 80
            volumeMounts:
              - name: pvc-nas
                # NAS儲存卷的掛載路徑
                mountPath: "/data"  
          volumes:
            # 指定待使用的 PVC
            - name: pvc-nas  
              persistentVolumeClaim:
                claimName: pvc-nas
  2. 建立Deployment。

    kubectl create -f deploy.yaml
  3. 查看應用Pod部署情況。

    kubectl get pod -l app=nginx

    預期輸出:

    NAME                  READY   STATUS    RESTARTS   AGE
    nas-test-****-***a    1/1     Running   0          32s
    nas-test-****-***b    1/1     Running   0          32s

控制台

  1. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇工作負載 > 無狀態

  2. 無狀態頁面,單擊使用鏡像建立,按照頁面提示完成應用的配置。

    主要參數如下,其他參數保持預設即可,詳見建立無狀態工作負載Deployment

    配置項

    參數

    說明

    應用基本資料

    應用程式名稱

    Deployment名稱。

    副本數量

    Deployment的副本數量。

    多個副本會掛載至同一NAS檔案系統,以便後續驗證NAS的共用儲存。

    容器配置

    鏡像名稱

    應用鏡像地址。

    所需資源

    所需的vCPU和記憶體資源。

    數據卷

    單擊增加雲端儲存聲明(PersistentVolumeClaim),完成參數配置。

    • 掛載源:此前建立的PVC。

    • 容器路徑:NAS檔案系統需要掛載到的容器路徑,如/data。

    部署後,可在無狀態頁面單擊應用程式名稱,在容器組頁簽下確認Pod已正常運行(狀態為Running)。

驗證共用儲存和持久化儲存

成功部署應用後,可驗證儲存卷是否按預期工作。

共用儲存

持久化儲存

在一個Pod中建立檔案,然後另一個Pod中查看,驗證資料的共用儲存。

  1. 查看Pod資訊,擷取Pod名稱。

    kubectl get pod | grep nas-test

    預期輸出:

    nas-test-*****a   1/1     Running   0          40s
    nas-test-*****b   1/1     Running   0          40s
  2. 在一個Pod中建立檔案。

    以名為nas-test-*****a的Pod作為樣本:

    kubectl exec nas-test-*****a -- touch /data/test.txt
  3. 在另一個Pod中查看檔案是否存在。

    以名為nas-test-*****b的Pod為例。

    kubectl exec nas-test-*****b -- ls /data

    預期輸出:

    test.txt

    可以查看到此前建立的檔案,表明資料可在多Pod間共用。

重建Deployment,在建立Pod中查看檔案系統中的資料是否存在,驗證資料的持久化儲存。

  1. 刪除應用Pod以觸發重建。

    kubectl rollout restart deploy nas-test
  2. 查看Pod,等待新Pod啟動並進入Running狀態。

    kubectl get pod | grep nas-test

    預期輸出:

    nas-test-*****c   1/1     Running   0          67s
    nas-test-*****d   1/1     Running   0          49s
  3. 在新Pod中查看此前建立的檔案是否存在。

    以名為nas-test-*****c的Pod為例。

    kubectl exec nas-test-*****c -- ls /data

    預期輸出:

    test.txt

    可以查看到此前寫入的檔案,表明資料可持久化儲存。

適用於生產環境

  • 安全與許可權管理

    • 使用許可權組進行存取控制:NAS通過許可權組來管理網路存取權限。請遵循最小許可權原則,在許可權組中僅添加叢集節點的私網IP地址或其所屬的vSwitch網段,避免授權範圍過大(如 0.0.0.0/0)。

  • 效能與成本最佳化

    • 選擇合適的NAS類型:參見檔案系統選型,根據應用對IOPS和輸送量的要求合理選擇NAS類型。

    • 最佳化掛載選項 (mountOptions):根據工作負載特性調整NFS掛載參數。例如,使用vers=4.0vers=4.1協議版本可能在某些情境下獲得更好的效能和檔案鎖定能力。對於大規模檔案讀寫,可測試調整rsizewsize參數以最佳化讀寫效能。

  • 營運與可靠性

    • 配置健全狀態檢查:為應用Pod配置存活探針(Liveness Probe),檢查掛載點是否正常。當掛載失效時,ACK可自動重啟Pod,觸發儲存卷的重新掛載。

    • 監控與警示:利用容器儲存監控配置警示,及時發現儲存卷的異常或效能瓶頸。

    • 使用Retain回收策略:對於生產資料,將PV的persistentVolumeReclaimPolicy設定為Retain,防止因誤刪PVC而導致後端NAS檔案系統中的資料被意外刪除。

資源釋放指引

為避免產生預期外費用,當您不再需要使用NAS儲存卷時,請按照以下順序釋放相關資源。

  1. 刪除工作負載

    • 操作:刪除所有使用該NAS儲存卷的應用(如Deployment、StatefulSet等)。此操作將停止應用Pod對儲存卷的掛載和讀寫。

    • 命令樣本:kubectl delete deployment <your-deployment-name>

  2. 刪除PVC

    • 操作:刪除應用所關聯的PVC。刪除後,其綁定PV的後續行為取決於該PV的persistentVolumeReclaimPolicy

    • 回收策略說明:

      • Retain(推薦):刪除PVC後,其綁定的PV會進入Released(已釋放)狀態。PV對象和後端NAS資料都會被完整保留,需手動刪除。

      • Delete:刪除PVC後,對應的PV對象會被刪除。請注意:

        • PV指向NAS根目錄時,後端的NAS資料仍會保留,防止誤刪除。

        • 當一個靜態PV的 volumeHandle 值是 path 值的尾碼時(如volumeHandleapp,而path/exports/app),刪除PVC將觸發後端NAS子目錄的自動刪除。請務必謹慎使用。

    • 命令樣本:kubectl delete pvc <your-pvc-name>

  3. 刪除PV

    • 操作:當PV處於AvailableReleased狀態時,可執行刪除操作。此操作僅從Kubernetes叢集中移除該PV的定義,不會刪除後端NAS檔案系統上的資料。

    • 命令樣本:kubectl delete pv <your-pv-name>

  4. 刪除後端NAS檔案系統(可選)

    • 操作:請參見刪除檔案系統。此操作將永久刪除該NAS上的所有資料,且無法恢複,請謹慎操作。執行前,請務必確認該NAS已無任何業務依賴。

相關文檔