NAS儲存卷是一種可共用訪問、彈性擴充、高可靠以及高效能的Distributed File System,適用於巨量資料分析、共用資料、Web應用以及儲存日誌等情境。通過CSI組件,您可以使用已有的NAS建立PV和PVC,並在工作負載中掛載,實現資料的持久化儲存和共用儲存。
前提條件
叢集預設已安裝CSI組件。如需升級,請參見升級csi-plugin和csi-provisioner。
說明如果您叢集中使用Flexvolume組件,由於Flexvolume已廢棄,請參見遷移Flexvolume至CSI完成遷移後再進行掛載。您可以在,在儲存頁簽下確認儲存群組件類型。
確認已有NAS滿足以下條件,否則請重新建立檔案系統或者使用NAS動態儲存裝置卷。
協議類型為NFS。
ACK不支援掛載SMB協議的NAS檔案系統。
掛載點和叢集節點在同一VPC內,且狀態為可用。如需添加掛載點,請參見管理掛載點。
NAS檔案系統只能掛載到相同VPC的Pod上,不支援跨VPC掛載。同一VPC下,NAS可以跨可用性區域掛載。
說明如需加密NAS儲存卷中的資料,請在建立NAS檔案系統時配置加密類型。
注意事項
NAS為共用儲存,一個NAS儲存卷可以掛載到多個Pod上,可能出現多個Pod同時寫入資料的問題,需應用自行確保資料一致性。
關於NAS並發寫入的一些限制條件,請參見如何避免多進程或多用戶端並發寫同一記錄檔可能出現的異常?和如何解決向NFS檔案系統中寫入資料延遲問題?
若您在應用模板中配置了
securityContext.fsgroup參數,kubelet在儲存卷掛載完成後會執行chmod或chown操作,導致掛載時間延長。若已配置securityContext.fsgroup參數,且需要減少掛載時間。具體操作,請參見NAS儲存卷掛載時間延長。掛載NAS儲存卷後,請勿刪除NAS掛載點,否則會造成系統無響應。
掛載NAS靜態儲存卷(kubectl)
步驟一:建立PV
修改以下YAML內容,並儲存為pv-nas.yaml。
apiVersion: v1 kind: PersistentVolume metadata: name: pv-nas labels: alicloud-pvname: pv-nas spec: capacity: storage: 5Gi accessModes: - ReadWriteMany csi: driver: nasplugin.csi.alibabacloud.com volumeHandle: pv-nas # 必須與PV Name保持一致。 volumeAttributes: server: "0c47****-mpk25.cn-shenzhen.nas.aliyuncs.com" # NAS掛載點地址。掛載點所屬VPC必須與叢集所屬VPC一致。 path: "/csi" # 掛載子目錄。 mountOptions: - nolock,tcp,noresvport - vers=3參數
說明
namePV的名稱。
labels設定PV的標籤。
storagePV的容量。
accessModes配置訪問模式,預設為
ReadWriteMany,也支援ReadWriteOnce和ReadOnlyMany。driver驅動類型。此處必須配置為
nasplugin.csi.alibabacloud.com,表示使用阿里雲NAS CSI外掛程式。volumeHandle配置PV的唯一識別碼,必須與PV Name保持一致。若需要同時使用多個PV,則各個PV中該值須唯一。
serverNAS掛載點地址。掛載點所屬VPC必須與叢集所屬VPC一致。
關於如何查看掛載點地址,請參見管理掛載點。
path要掛載的NAS子目錄。
如果未設定,則預設掛載到根目錄。
如果NAS中沒有該目錄,會自動建立後再進行掛載。
說明通用型NAS的根目錄為
/,極速型NAS的根目錄為/share。掛載極速型NAS的子目錄時,path必須以/share開頭,如/share/data。mountOptionsNAS的掛載參數,包括NFS協議版本等。推薦使用NFS v3協議,極速型NAS僅支援NFS v3。關於NFS協議的更多資訊,請參見NFS協議。
建立PV。
kubectl create -f pv-nas.yaml查看PV。
kubectl get pv預期返回:
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS VOLUMEATTRIBUTESCLASS REASON AGE pv-nas 5Gi RWX Retain Available <unset> 25s
步驟二:建立PVC
將以下YAML內容儲存至pvc-nas.yaml檔案。
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: pvc-nas spec: accessModes: - ReadWriteMany resources: requests: storage: 5Gi selector: matchLabels: alicloud-pvname: pv-nas參數
說明
namePVC名稱。
accessModes訪問模式。預設為
ReadWriteMany,也支援ReadWriteOnce或ReadOnlyMany。storage聲明所需使用的儲存卷的容量。
matchLabels輸入PV的標籤,用於關聯PV。
建立PVC。
kubectl create -f pvc-nas.yaml查看PVC。
kubectl get pvc預期返回如下,可以看到PVC已關聯PV。
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE pvc-nas Bound pv-nas 5Gi RWX <unset> 5s
步驟三:建立應用並掛載NAS
將以下YAML內容儲存為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 mountPath: "/data" volumes: - name: pvc-nas persistentVolumeClaim: claimName: pvc-nas參數
說明
mountPathNAS在容器中掛載的位置。
claimNamePVC的名稱,用於綁定PVC。
建立Deployment並掛載NAS。
kubectl create -f nas.yaml查看Deployment中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
掛載NAS靜態儲存卷(控制台)
步驟一:建立儲存卷(PV)
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇。
在儲存卷頁面,單擊建立。
在彈出的對話方塊中,完成參數配置,然後單擊建立。
配置項
說明
樣本值
儲存卷類型
選擇NAS。
NAS
名稱
儲存卷名稱。在叢集內必須唯一。
pv-nas
總量
儲存卷的容量。
5Gi
訪問模式
支援ReadWriteMany和ReadWriteOnce。
ReadWriteMany
是否使用CNFS
是否使用CNFS功能。基於CNFS託管NAS可以提升NAS的效能和QoS控制。
本文主要介紹如何直接使用已有NAS建立儲存卷,不使用CNFS功能。如需使用CNFS配置已有NAS,請參見建立CNFS管理NAS檔案系統(推薦)。
不開啟
掛載點網域名稱
僅在未開啟CNFS時,需要設定。
您可以通過選擇掛載點或者自訂的方式配置要掛載的NAS檔案系統目錄。關於如何查看掛載點地址,請參見管理掛載點。
0c47****-mpk25.cn-shenzhen.nas.aliyuncs.co
進階選項(選填)
掛載路徑
要掛載的NAS子目錄。
如果未設定,則預設掛載到根目錄。
如果NAS中沒有該目錄,會自動建立後再進行掛載。
說明通用型NAS的根目錄為
/,極速型NAS的根目錄為/share。掛載極速型NAS的子目錄時,path必須以/share開頭,如/share/data。/data
回收策略
預設為Retain。表示刪除PVC時,PV和NAS檔案不會被刪除,需要您手動刪除。
說明Delete需配合
archiveOnDelete一起使用。由於靜態PV暫不支援archiveOnDelete,僅在此處選擇Delete時,刪除PVC時,不會真正刪除PV和NAS檔案。如需配置archiveOnDelete,請使用NAS動態儲存裝置卷。Retain
掛載選項
NAS的掛載參數,包括NFS協議版本等。推薦使用NFS v3協議,極速型NAS僅支援NFS v3。關於NFS協議的更多資訊,請參見NFS協議。
nolock,tcp,noresvport
vers=3
標籤
為該儲存卷添加標籤。
pv-nas
建立完成後,在儲存卷頁面可以看到新建立的PV。
步驟二:建立儲存聲明(PVC)
在叢集管理頁左側導覽列,選擇。
在儲存聲明頁面,單擊建立。
在彈出的對話方塊中,完成參數配置,然後單擊建立。
參數
說明
樣本值
儲存宣告類型
選擇NAS。
NAS
名稱
儲存聲明名稱在叢集內必須唯一。
pvc-nas
分配模式
選擇已有儲存卷。
說明若未建立儲存卷,您可以設定分配模式為建立儲存卷,配置建立儲存卷參數。
選擇已有儲存卷
已有儲存卷
單擊選擇已有儲存卷,在目標儲存卷右側操作列單擊選擇,選擇儲存卷。
pv-nas
總量
聲明所需使用的儲存卷的容量。不能大於儲存卷的總量。
5
訪問模式
預設為ReadWriteMany,也可選擇ReadWriteOnce或ReadOnlyMany。
ReadWriteMany
步驟三:建立應用並掛載NAS
在叢集管理頁左側導覽列,選擇。
在無狀態頁面,單擊使用鏡像建立。
配置建立應用的參數資訊,配置完成後,單擊建立。
主要參數如下,其他參數保持預設即可。更多資訊,請參見建立無狀態工作負載Deployment。
配置項
參數
說明
樣本
應用基本資料
應用程式名稱
Deployment名稱,自訂輸入。格式要求請參考介面提示。
nas-test
副本數量
Deployment的副本數量。
2
容器配置
鏡像名稱
用於部署應用的鏡像地址。
anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
所需資源
所需的vCPU和記憶體資源。
0.25 Core,512 MiB
資料卷
單擊增加雲端儲存聲明,然後完成參數配置。
掛載源:選擇之前建立的PVC。
容器路徑:輸入NAS檔案系統要掛載到的容器路徑。
掛載源:pvc-nas
容器路徑:/data
查看應用部署狀態。
在無狀態頁面,單擊應用程式名稱。
在容器組頁簽下,確認Pod已正常運行(狀態為Running)。
常見問題
在掛載和使用NAS儲存卷的過程中,如果遇到問題,可參考以下文檔進行排查。
相關文檔
通過CNFS可以實現對NAS檔案系統的獨立管理,提升NAS檔案系統的效能和QoS控制。具體操作,請參見通過CNFS管理NAS檔案系統(推薦)。