通過CNFS,可將阿里雲NAS檔案系統作為原生Kubernetes資源進行管理,為網站、資料分析等工作負載提供了更簡單、高效的儲存方案。
選擇NAS檔案系統的建立與接入方式
開始操作前,選擇如何為叢集提供NAS檔案系統。
方式 | 說明 | 卷提供方式 | 適用情境 |
CNFS自動建立並管理一個配置固定的NAS檔案系統,實現快速掛載。 | 動態磁碟區 |
| |
CNFS根據參數配置,建立一個全新的、可自訂的NAS檔案系統。 |
| 對效能、加密、成本等有特定要求,或需要精細化管理儲存。 | |
將已存在的NAS檔案系統接入CNFS進行統一管理。 |
| 將已有NAS平滑接入叢集。 |
準備工作
已建立1.20以上版本的ACK託管叢集Pro版。如需升級,請參見手動升級叢集。
通過kubectl使用CNFS時,支援1.20版本。
csi-plugin、csi-provisioner、storage-operator的版本滿足以下要求:
如需升級,請參見組件。
csi-plugin和csi-provisioner:v1.20.5-ff6490f-aliyun及以上版本。
storage-operator:v1.18.8.56-2aa33ba-aliyun及以上版本;通過控制台使用CNFS時需為v1.26.2-1de13b6-aliyun及以上版本。
已開通Apsara File Storage NAS服務。NAS檔案系統限制如下,詳見使用限制。
首次登入時,按照頁面引導開通服務。
僅支援通用型NAS的容量型和效能型。
不支援進階型和極速型NAS。
每個帳號在單個地區內可建立的NAS檔案系統數量存在上限。
如需對NAS檔案系統進行KMS加密,需開通KMS服務,詳見開通Key Management Service。
方式一:自動建立並使用NAS檔案系統
通過CNFS可自動建立一個預設配置的NAS檔案系統。CNFS會根據叢集環境完成建立,預設不加密。若當前地區不支援容量型NAS,則自動使用效能型NAS。
kubectl
部署樣本
以下YAML展示了應用(Deployment和StatefulSet)如何請求並掛載儲存:通過PVC向StorageClass請求儲存,該StorageClass基於關聯的CNFS對象,在NAS中自動建立一個子目錄作為PV並掛載至應用Pod。
CNFS的參數說明如下。
其餘資源的參數說明,可參見使用NAS動態儲存裝置卷。
參數 | 說明 |
| 當前CNFS的描述。 |
| 需要建立的儲存卷類型,使用 |
| 回收策略。當前僅支援 |
| 可選,是否啟用加密方式。
|
| 是否開啟資源回收筒功能,避免誤刪除檔案導致業務受阻或資料丟失。
|
結果驗證
檢查PV和PVC狀態。
控制台
1. 建立CNFS
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇。
單擊建立容器網路檔案系統,按照頁面提示配置CNFS。
選擇NAS檔案系統
選擇建立預設NAS
按需開啟全鏈路加速,以利用彈性加速特性進行掛載,最佳化資料訪問效能,詳情請參見通過CNFS使用EFC用戶端掛載NAS。
在CNFS列表,單擊目標CNFS查看詳情,然後單擊NAS ID進入NAS檔案系統詳情頁面。
單擊掛載使用,在掛載點地址列查看目標掛載點的掛載點地址。
2. 建立StorageClass
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇。
在儲存類頁面,單擊建立,按照頁面提示完成StorageClass的配置。
主要配置項如下。詳細說明請參見建立StorageClass。
配置項
說明
樣本
儲存卷類型
選擇NAS。
NAS
選擇掛載點
此前通過CNFS建立的預設NAS檔案系統的掛載點地址。
關於如何查看掛載點地址,請參見管理掛載點。
64888******-e*****.cn-qingdao.nas.aliyuncs.com
掛載路徑
待掛載的NAS子目錄。如果未設定,則預設掛載到根目錄。通用型NAS的根目錄為
/。如果NAS中沒有該目錄,系統會自動建立並進行掛載。
/
回收策略
回收策略。當前僅支援
Retain,刪除CNFS時不會刪除後端的NAS檔案系統,防止資料丟失。Retain
3. 建立PVC
在叢集管理頁左側導覽列,選擇。
在儲存聲明頁面,單擊建立,選擇儲存宣告類型為NAS,按照頁面提示完成PVC的配置。
參數
說明
名稱
叢集內保持唯一。
分配模式
儲存卷使用方式。
已有儲存卷類
單擊選擇儲存類,選擇此前建立的StorageClass。
總量
所建立儲存卷的容量,不超過待掛載的儲存卷容量。
訪問模式
預設為ReadWriteMany,也可選擇ReadWriteOnce或ReadOnlyMany。
4. 建立應用並掛載NAS
建立Deployment或建立StatefulSet時,在容器配置頁面的資料卷地區,可以配置PVC掛載到容器。
以下樣本表示將通過CNFS建立的NAS檔案系統掛載到容器中的/data路徑下。

方式二:自訂參數建立並使用NAS檔案系統
通過CNFS可建立具有自訂參數的NAS檔案系統。流程如下:
定義一個ContainerNetworkFileSystem資源,執行個體化一個新的NAS檔案系統。
通過建立靜態PV或動態StorageClass,將該檔案系統暴露給叢集內的應用進行掛載。
kubectl
1. 建立自訂的NAS檔案系統
建立一個ContainerNetworkFileSystem資源,聲明NAS的詳細參數,如儲存類型、加密方式、交換器等。
cat <<EOF | kubectl apply -f - apiVersion: storage.alibabacloud.com/v1beta1 kind: ContainerNetworkFileSystem metadata: name: cnfs-nas-filesystem spec: description: "cnfs" type: nas reclaimPolicy: Retain parameters: filesystemType: standard storageType: Capacity protocolType: NFS encryptType: SSE-KMS enableTrashCan: "true" trashCanReservedDays: "5" vSwitchId: vsw-2ze9l3ppwzg6bl02j**** EOF參數
說明
description當前CNFS的描述。
type需要建立的儲存卷類型,使用
nas。reclaimPolicy回收策略。當前僅支援
Retain,刪除CNFS時不會刪除後端的NAS檔案系統,防止資料丟失。parameters.filesystemType檔案系統類型。預設為通用型NAS
standard。parameters.storageType儲存類型。通用型NAS可選擇效能型
Performance或容量型Capacity。parameters.protocolType檔案傳輸通訊協定類型。目前僅支援NFS協議。
parameters.encryptType可選,是否啟用加密方式。
None:不加密。SSE-KMS:啟用NAS託管密鑰,即使用NAS完全託管的祕密金鑰加密每個檔案系統,該密鑰由NAS在KMS中建立和管理。
parameters.enableTrashCan是否開啟資源回收筒功能,避免誤刪除檔案導致業務受阻或資料丟失。
true:開啟。false:不開啟。
parameters.trashCanReservedDays表示資源回收筒檔案保留的最長時間,預設為7天。樣本中
trashCanReservedDays: 5表示資源回收筒的檔案最長保留5天。parameters.vSwitchId建立出的NAS檔案系統需要使用的交換器ID。
通用型NAS支援的地區和可用性區域,請參見地區 可用性區域。
查看建立的NAS檔案系統。
kubectl get cnfs預期輸出:
NAME AGE cnfs-nas-filesystem 30s查看NAS檔案系統的詳細資料。
kubectl get cnfs/cnfs-nas-filesystem -o yaml完整的YAML說明,請參見CNFS YAML說明。
2. 建立PV或StorageClass
建立CNFS後,選擇應用如何接入並使用NAS。
靜態PV:手動將一個PV綁定到NAS上的已有目錄,適用於需要訪問特定存量資料的情境。
動態StorageClass:建立一個StorageClass作為模板,讓應用可以按需自動建立全新的獨立子目錄。
PV
關於PV參數的詳細說明,請參見使用NAS靜態儲存卷。
執行以下內容建立引用NAS檔案系統的PV對象。
cat <<EOF | kubectl apply -f - apiVersion: v1 kind: PersistentVolume metadata: name: cnfs-nas-pv labels: alicloud-pvname: cnfs-nas-pv spec: capacity: storage: 5Gi accessModes: - ReadWriteMany csi: driver: nasplugin.csi.alibabacloud.com volumeHandle: cnfs-nas-pv # 需與PV name保持一致。 volumeAttributes: containerNetworkFileSystem: cnfs-nas-filesystem path: "/" mountOptions: - nolock,tcp,noresvport - vers=3 EOF參數
說明
containerNetworkFileSystem指定需要使用的CNFS名稱。
path掛載儲存卷在CNFS中使用的路徑。
查看PV是否建立成功。
kubectl get pv預期輸出:
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS VOLUMEATTRIBUTESCLASS REASON AGE cnfs-nas-pv 5Gi RWX Retain Available <unset> 9s
StorageClass
關於StorageClass參數的詳細說明,請參見使用NAS動態儲存裝置卷。
建立引用NAS檔案系統的StorageClass。
cat <<EOF | kubectl apply -f -
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: alibabacloud-nas-cnfs
mountOptions:
- nolock,tcp,noresvport
- vers=3
parameters:
volumeAs: subpath
containerNetworkFileSystem: cnfs-nas-filesystem
path: "/"
provisioner: nasplugin.csi.alibabacloud.com
reclaimPolicy: Retain
# 指定為true,允許對儲存卷的目錄配額進行擴容
allowVolumeExpansion: true
EOF3. 建立PVC
關於PVC參數的詳細說明,請參見建立PVC。
根據此前建立的靜態PV和動態StorageClass,建立引用NAS檔案系統的PVC。
PV
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: cnfs-nas-pvc
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 5Gi
selector:
matchLabels:
alicloud-pvname: cnfs-nas-pv # 通過標籤精確匹配此前建立的PV
EOFStorageClass
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: cnfs-nas-pvc
spec:
accessModes:
- ReadWriteMany
storageClassName: alibabacloud-nas-cnfs
resources:
requests:
storage: 70Gi
EOF4. 建立應用並掛載NAS
PVC建立後,將其綁定的 PV 掛載到應用中。
建立引用PVC的應用。
cat <<EOF | kubectl apply -f - apiVersion: apps/v1 kind: Deployment metadata: name: cnfs-nas-deployment 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: cnfs-nas-pvc mountPath: "/data" volumes: - name: cnfs-nas-pvc persistentVolumeClaim: claimName: cnfs-nas-pvc EOF查看所建立應用的工作狀態。
kubectl get pod -l app=nginx預期輸出中,Pod狀態正常,CNFS成功將NAS檔案系統掛載到Pod中。
NAME READY STATUS RESTARTS AGE cnfs-nas-deployment-86959b**** 1/1 Running 0 30s cnfs-nas-deployment-869ajk**** 1/1 Running 0 30s
控制台
1. 建立CNFS
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇。
單擊建立容器網路檔案系統,按照頁面提示配置CNFS。
選擇NAS檔案系統
選擇選擇已有NAS,然後單擊建立NAS建立自訂的NAS檔案系統,建立完成後選擇該NAS。
關於如何建立NAS,請參見通過控制台建立通用型NAS檔案系統。
按需開啟全鏈路加速,以利用彈性加速特性進行掛載,最佳化資料訪問效能,詳情請參見通過CNFS使用EFC用戶端掛載NAS。
2. 建立PV或StorageClass
通過建立靜態PV或動態儲存裝置類StorageClass來綁定NAS檔案系統。
PV
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇。
單擊建立,選擇儲存卷類型為NAS,按照頁面提示完成PV的配置。
主要配置項如下。詳細配置項說明,請參見建立PV。
配置項
說明
總量
PV容量聲明。此聲明僅為PVC匹配依據,不限制實際可用容量。應用實際可用儲存上限為NAS檔案系統總容量。
NAS實際容量上限由其規格決定,請參見通用型NAS。
是否使用CNFS
是否啟用CNFS。
選擇CNFS
開啟CNFS功能後,選擇此前建立的CNFS。
進階選項(選填)
掛載路徑:
待掛載的NAS子目錄。如果未設定,則預設掛載到根目錄。通用型NAS的根目錄為
/。如果NAS中沒有該目錄,系統會自動建立並進行掛載。
回收策略:CNFS僅支援Retain。
開啟CNFS加速:開啟CNFS加速功能,詳情請參見通過CNFS使用EFC用戶端掛載NAS。
StorageClass
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇。
在儲存類頁面,單擊建立,按照頁面提示完成StorageClass的配置。
主要配置項如下。詳細說明請參見建立StorageClass。
配置項
說明
樣本
儲存卷類型
選擇NAS。
NAS
選擇掛載點
此前通過CNFS建立的預設NAS檔案系統的掛載點地址。
關於如何查看掛載點地址,請參見管理掛載點。
64888******-e*****.cn-qingdao.nas.aliyuncs.com
掛載路徑
待掛載的NAS子目錄。如果未設定,則預設掛載到根目錄。通用型NAS的根目錄為
/。如果NAS中沒有該目錄,系統會自動建立並進行掛載。
/
回收策略
回收策略。當前僅支援
Retain,刪除CNFS時不會刪除後端的NAS檔案系統,防止資料丟失。Retain
3. 建立PVC
在叢集管理頁左側導覽列,選擇。
在儲存聲明頁面,單擊建立,選擇儲存宣告類型為NAS,按照頁面提示完成PVC的配置。
參數
說明
名稱
叢集內保持唯一。
分配模式
儲存卷使用方式。
已有儲存卷類
單擊選擇儲存類,選擇此前建立的StorageClass。
總量
所建立儲存卷的容量,不超過待掛載的儲存卷容量。
訪問模式
預設為ReadWriteMany,也可選擇ReadWriteOnce或ReadOnlyMany。
4. 建立應用並掛載NAS
建立Deployment或建立StatefulSet時,在容器配置頁面的資料卷地區,可以配置PVC掛載到容器。
以下樣本表示將通過CNFS建立的NAS檔案系統掛載到容器中的/data路徑下。

方式三:納管並使用已有的NAS檔案系統
通過CNFS可納管一個已存在的NAS檔案系統,並將其接入叢集供應用進行掛載和使用。
kubectl
1. 使用已有NAS建立CNFS
建立一個ContainerNetworkFileSystem資源,引用NAS掛載點。
# 當NAS檔案系統存在時,載入已建立的NAS檔案系統。 cat <<EOF | kubectl apply -f - apiVersion: storage.alibabacloud.com/v1beta1 kind: ContainerNetworkFileSystem metadata: name: cnfs-nas-filesystem spec: description: "cnfs" type: nas reclaimPolicy: Retain parameters: server: 17f7e4****-h****.cn-beijing.nas.aliyuncs.com EOF參數
說明
description當前檔案系統的簡單描述。
type需要建立的儲存類型。
reclaimPolicy回收策略。當前僅支援
Retain,刪除CNFS時不會刪除後端的NAS檔案系統,防止資料丟失。parameters.serverNAS的掛載點地址。
查看NAS檔案系統。
kubectl get cnfs預期輸出:
NAME AGE cnfs-nas-filesystem 10s查看NAS檔案系統的詳細資料。
kubectl get cnfs/cnfs-nas-filesystem -o yaml完整的YAML說明,可參見CNFS YAML說明。
2. 在應用中掛載NAS
在應用中基於CNFS使用NAS儲存卷的流程與方式二:自訂參數建立並使用NAS檔案系統類似。請參見:
控制台
1. 使用已有NAS建立CNFS
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇。
單擊建立容器網路檔案系統,按照頁面提示配置CNFS。
在建立容器網路檔案系統面板,配置相關參數後,單擊確定。
選擇NAS檔案系統。
選擇選擇已有NAS,在下拉式清單中選擇已有的NAS掛載點。
按需開啟全鏈路加速,以利用彈性加速特性進行掛載,最佳化資料訪問效能,詳情請參見通過CNFS使用EFC用戶端掛載NAS。
2. 在應用中掛載NAS
在應用中基於CNFS使用NAS儲存卷的流程與方式二:自訂參數建立並使用NAS檔案系統類似。請參見:
生產環境使用建議
維度 | 說明 |
資料安全 | 資料加密:建立新的NAS檔案系統時,可在CNFS資源中設定 |
營運管理 |
|
成本最佳化 |
|
參考資訊
驗證共用儲存、資料隔離、持久化儲存
NAS掛載完成後,可進一步驗證儲存行為是否符合預期。
驗證Deployment的共用儲存和持久化儲存
驗證StatefulSet的資料隔離和持久化儲存
CNFS YAML說明
執行kubectl get cnfs/<cnfsName> -o yaml查看CNFS YAML時,可查看CNFS對象的全部配置和即時狀態。
此處以方式二中執行kubectl get cnfs/cnfs-nas-filesystem -o yaml查看cnfs-nas-filesystem YAML為例。