容器網路檔案系統CNFS(Container Network File System)將阿里雲的檔案儲存體抽象為一個K8s對象(CRD)進行獨立管理,包括建立、刪除、描述、掛載、監控及擴容等營運操作,為了提升NAS檔案系統的效能,您可以通過CNFS使用NAS檔案系統,以提升NAS檔案系統的效能和QoS控制,實現對檔案系統層的獨立管理。本文介紹如何使用CNFS託管NAS檔案系統及CNFS在工作負載中的應用。
前提條件
已開通Apsara File Storage NAS服務。
首次登入Apsara File Storage NAS產品詳情頁時,按照頁面引導開通服務。
已建立ACK叢集Pro版,且叢集為1.20以上版本(通過kubectl使用CNFS時,支援1.20版本叢集)。具體操作,請參見建立ACK託管叢集。
儲存相關組件csi-plugin、csi-provisioner、storage-operator已升級至最新版本。關於升級組件的操作,請參見管理組件。使用CNFS功能時,相關組件版本要求如下:
csi-plugin和csi-provisioner組件為v1.20.5-ff6490f-aliyun及以上版本。
storage-operator組件為v1.18.8.56-2aa33ba-aliyun及以上版本;通過控制台使用CNFS時,該組件需為v1.26.2-1de13b6-aliyun及以上版本。
如需通過kubectl使用CNFS,請先通過kubectl工具串連叢集。具體操作,請參見擷取叢集KubeConfig並通過kubectl工具串連叢集。
僅支援通用型NAS檔案系統,不支援極速型NAS檔案系統。若您需要對NAS檔案系統進行KMS加密,請先開通KMS服務。具體操作,請參見開通Key Management Service。
功能介紹
您可以通過以下三種方式使用CNFS託管NAS檔案系統:
建立一個預設的CNFS檔案系統,並使用NAS動態儲存裝置卷自動掛載預設建立的NAS檔案系統,同時將NAS動態儲存裝置卷綁定到工作負載Deployment和StatefulSet中。
使用CNFS建立自訂的NAS檔案系統,並使用NAS靜態儲存卷或NAS動態儲存裝置卷掛載自訂建立的NAS檔案系統,然後將建立的NAS靜態儲存卷或NAS動態儲存裝置卷綁定到工作負載Deployment中。
使用CNFS配置已有的NAS檔案系統,並使用NAS靜態儲存卷或NAS動態儲存裝置卷掛載已有的NAS檔案系統,然後將建立的NAS靜態儲存卷或NAS動態儲存裝置卷綁定到工作負載Deployment中。
方式一:使用CNFS建立預設NAS檔案系統
根據當前叢集所在的VPC建立容量型NAS或效能型NAS,不支援極速型NAS。若當前地區不支援容量型NAS,則建立效能型NAS,預設對檔案不進行加密處理。
通過kubectl命令列建立
使用以下內容,建立一個預設的CNFS檔案系統,並使用NAS動態儲存裝置卷自動掛載到預設建立的NAS檔案系統中,同時將NAS動態儲存裝置卷綁定到工作負載Deployment和StatefulSet中。
參數 | 說明 |
description | 當前檔案系統的簡單描述。 |
type | 需要建立的儲存卷類型。 |
reclaimPolicy | 回收策略,目前僅支援Retain策略,刪除CNFS時並不會刪除NAS檔案系統。 |
parameters.encryptType | 可選,加密方式。
|
parameters.enableTrashCan | 是否開啟資源回收筒功能。
|
通過控制台建立
建立容器網路檔案系統CNFS。
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇
。在容器網路檔案系統CNFS頁面,單擊建立容器網路檔案系統。
在建立容器網路檔案系統面板,配置相關參數後,單擊確定。
配置項
說明
樣本
容器網路檔案系統CNFS名稱
CNFS名稱。
cnfs-nas-filesystem
選擇檔案系統類型
選擇要託管的檔案系統類型,支援NAS和OSS。
NAS
必選項
支援建立預設NAS或選擇已有NAS。選擇已有NAS時,您可以選擇已有的NAS掛載點或建立自訂的NAS檔案系統。
選擇檔案系統類型為NAS時,才會顯示該必選項。
建立預設NAS
容器網路檔案系統CNFS描述
CNFS的相關描述資訊。
通過CNFS建立預設NAS檔案系統
全鏈路加速
是否使用彈性加速特性進行掛載,預設關閉。關於彈性加速特性的更多資訊,請參見開啟CNFS NAS計算端分布式緩衝。
關閉
在容器網路檔案系統列表頁面,單擊目標檔案系統,查看容器網路檔案系統詳情,然後單擊NAS ID進入NAS檔案系統詳情頁面。
在檔案系統詳情頁面,單擊掛載使用,在掛載點列表的掛載點地址列,將游標放置在表徵圖上,即可查看目標掛載點的掛載點地址。
建立動態儲存裝置類StorageClass。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
在儲存類頁面,單擊右上方的建立。
在建立面板,完成StorageClass的相關配置後,單擊建立。
配置項
說明
樣本
名稱
StorageClass的名稱。
名稱必須以小寫字母開頭,只能包含小寫字母、數字、小數點(.)和中劃線(-)。
alibabacloud-cnfs-nas
儲存卷類型
可選擇雲端硬碟或NAS。
NAS
選擇掛載點
64888******-e*****.cn-qingdao.nas.aliyuncs.com
回收策略
回收策略,目前僅支援Retain策略,刪除CNFS時並不會刪除NAS檔案系統。
Retain
掛載選項
掛載NAS的選擇性參數,包括NFS協議版本等參數。
NFS協議版本號碼推薦使用v3,且極速類型NAS僅支援v3。關於NFS協議的更多資訊,請參見NFS協議。
nolock,tcp,noresvport
vers=3
掛載路徑
NAS檔案系統中的掛載路徑。
/
建立PVC。
在叢集管理頁左側導覽列,選擇 。
在儲存聲明頁面,單擊右上方的建立。
在建立儲存聲明面板,完成相關配置後,單擊建立。
參數
說明
樣本
儲存宣告類型
支援雲端硬碟、NAS、OSS三種雲端儲存類型。 本文中選擇NAS。
NAS
名稱
建立的儲存聲明名稱在叢集內必須唯一。
cnfs-nas-pvc
分配模式
儲存卷使用方式。
使用儲存類動態建立
已有儲存卷類
單擊選擇儲存類,在目標儲存類右側操作列單擊選擇,選擇儲存類。
alibabacloud-cnfs-nas
總量
所建立儲存卷的容量。
說明所建立儲存卷聲明的容量不能超過待掛載的儲存卷容量。
70 Gi
訪問模式
預設為ReadWriteMany,也可選擇ReadWriteOnce或ReadOnlyMany。
ReadWriteMany
在目標應用中掛載PVC。
將通過CNFS建立的NAS檔案系統掛載到容器中的/data路徑下。
方式二:使用CNFS建立自訂NAS檔案系統
通過kubectl命令列建立
使用CNFS建立自訂的NAS檔案系統,並使用NAS靜態儲存卷或NAS動態儲存裝置卷掛載自訂建立的NAS檔案系統,然後將建立的NAS靜態儲存卷或NAS動態儲存裝置卷綁定到工作負載Deployment中。
建立自訂的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: filesystemType: standard storageType: Capacity protocolType: NFS encryptType: SSE-KMS enableTrashCan: "true" trashCanReservedDays: "5" vSwitchId: vsw-2ze9l3ppwzg6bl02j**** EOF
參數
說明
description
當前檔案系統的簡單描述。
type
需要建立的儲存卷類型。
reclaimPolicy
回收策略,目前僅支援Retain策略,刪除CNFS時並不會刪除NAS檔案系統。
parameters.filesystemType
檔案系統類型。預設為通用型standard。
parameters.storageType
儲存類型,當filesystemType為standard時,可選擇效能型Performance或容量型Capacity NAS檔案系統。
parameters.protocolType
檔案傳輸通訊協定類型為NFS,目前僅支援NFS V3協議。
parameters.encryptType
可選,加密方式。
None:不加密。
SSE-KMS:使用NAS服務端KMS加密。
parameters.enableTrashCan
是否開啟資源回收筒功能。
true:開啟。
false:不開啟。
parameters.trashCanReservedDays
表示資源回收筒檔案保留的最長時間,預設為7天。樣本中
trashCanReservedDays: 5
,表示資源回收筒的檔案最長保留5天。parameters.vSwitchId
建立出的NAS檔案系統需要使用的交換器ID。
執行以下命令查看建立的NAS檔案系統。
kubectl get cnfs
預期輸出:
NAME AGE cnfs-nas-filesystem 6d
執行以下命令查看NAS檔案系統的詳細資料。
kubectl get cnfs/cnfs-nas-filesystem -o yaml
預期輸出:
通過建立靜態PV或動態儲存裝置類StorageClass來綁定NAS檔案系統。
建立靜態PV。
執行以下內容建立引用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 REASON AGE cnfs-nas-pv 5Gi RWX Retain Available 4s
建立動態StorageClass。
執行以下內容建立引用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: nas-load-mount-target path: "/" provisioner: nasplugin.csi.alibabacloud.com reclaimPolicy: Retain allowVolumeExpansion: true EOF
說明allowVolumeExpansion:取值為true或false,表示是否開啟Quota及擴容功能。
建立PVC。
執行以下內容建立引用NAS檔案系統的PVC。
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 EOF
建立應用。
執行以下內容建立引用PVC的應用。
cat <<EOF | kubectl apply -f - apiVersion: apps/v1 kind: Deployment metadata: name: cnfs-nas-deployment labels: app: nginx spec: selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.14.2 ports: - containerPort: 80 volumeMounts: - name: cnfs-nas-pvc mountPath: "/data" volumes: - name: cnfs-nas-pvc persistentVolumeClaim: claimName: cnfs-nas-pvc EOF
執行以下命令查看所建立應用的工作狀態。
kubectl get pod
預期輸出:
NAME READY STATUS RESTARTS AGE cnfs-nas-deployment-86959b**** 1/1 Running 0 2s
從預期輸出可得,所建立的Deployment為Running狀態,表示CNFS在該Deployment中使用成功。
通過控制台建立
建立容器網路檔案系統CNFS。
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇
。在容器網路檔案系統CNFS頁面,單擊建立容器網路檔案系統。
在建立容器網路檔案系統面板,配置相關參數後,單擊確定。
配置項
說明
樣本
容器網路檔案系統CNFS名稱
CNFS名稱。
cnfs-nas-filesystem
選擇檔案系統類型
選擇要託管的檔案系統類型,支援NAS和OSS。
NAS
必選項
支援建立預設NAS或選擇已有NAS。選擇已有NAS時,您可以選擇已有的NAS掛載點或建立自訂的NAS檔案系統。
選擇檔案系統類型為NAS時,才會顯示該必選項。
選擇已有NAS
選擇NAS
選擇已有的NAS掛載點或單擊右側建立NAS來建立自訂的NAS檔案系統。
必選項為選擇已有NAS時,才會顯示該選項。
單擊右側建立NAS,僅支援建立通用型NAS檔案系統,相關操作,請參見通過控制台建立通用型NAS檔案系統。
容器網路檔案系統CNFS描述
CNFS的相關描述資訊。
通過CNFS建立自訂NAS檔案系統
全鏈路加速
是否使用彈性加速特性進行掛載,預設關閉。關於彈性加速特性的更多資訊,請參見開啟CNFS NAS計算端分布式緩衝。
關閉
通過建立靜態PV或動態儲存裝置類StorageClass來綁定NAS檔案系統。
建立靜態PV。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
在儲存卷頁面,單擊右上方的建立。
在建立儲存卷面板,配置相關參數後,單擊確定。
配置項
說明
樣本
儲存卷類型
支援雲端硬碟、NAS、OSS三種雲端儲存類型。本文中選擇為NAS。
NAS
名稱
建立的資料卷的名稱。資料卷名在叢集內必須唯一。
cnfs-nas-pv
總量
所建立儲存卷的容量。注意NAS檔案系統本身不限制使用量。此處不是NAS檔案系統的使用限額,只是所建立儲存卷的容量聲明。
5 Gi
訪問模式
支援ReadWriteMany和ReadWriteOnce。預設為ReadWriteMany。
ReadWriteMany
是否使用CNFS
使用CNFS功能。需要開啟,開啟後您需要進行以下操作:
選擇步驟1中已建立的CNFS。
是否開啟CNFS加速功能,關於CNFS加速更多資訊,請參見開啟CNFS NAS計算端分布式緩衝。
cnfs-nas-filesystem
顯示進階選項
掛載路徑:NAS檔案系統中的掛載路徑。以/為根目錄,設定後資料卷將掛載到指定的子目錄。
如果NAS根目錄下沒有此子目錄,會預設建立後再掛載。
您可以不填此項,預設掛載到NAS根目錄。
回收策略:回收策略,CNFS僅支援Retain策略。
/
Retain
標籤
為該儲存卷添加標籤。
cnfs-nas-pv
建立動態儲存裝置類StorageClass。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
在儲存類頁面,單擊右上方的建立。
在建立面板,完成StorageClass的相關配置後,單擊建立。
配置項
說明
樣本
名稱
StorageClass的名稱。
名稱必須以小寫字母開頭,只能包含小寫字母、數字、小數點(.)和中劃線(-)。
alibabacloud-cnfs-nas
儲存卷類型
可選擇雲端硬碟或NAS。
NAS
選擇掛載點
64888******-e*****.cn-qingdao.nas.aliyuncs.com
回收策略
回收策略,目前僅支援Retain策略,刪除CNFS時並不會刪除NAS檔案系統。
Retain
掛載選項
掛載NAS的選擇性參數,包括NFS協議版本等參數。
NFS協議版本號碼推薦使用v3,且極速類型NAS僅支援v3。關於NFS協議的更多資訊,請參見NFS協議。
nolock,tcp,noresvport
vers=3
掛載路徑
NAS檔案系統中的掛載路徑。
/
建立PVC。
在叢集管理頁左側導覽列,選擇 。
在儲存聲明頁面,單擊右上方的建立。
在建立儲存聲明面板,完成相關配置後,單擊建立。
參數
說明
樣本
儲存宣告類型
支援雲端硬碟、NAS、OSS三種雲端儲存類型。 本文中選擇NAS。
NAS
名稱
建立的儲存聲明名稱在叢集內必須唯一。
cnfs-nas-pvc
分配模式
儲存卷使用方式。
使用儲存類動態建立
已有儲存卷類
單擊選擇儲存類,在目標儲存類右側操作列單擊選擇,選擇儲存類。
alibabacloud-cnfs-nas
總量
所建立儲存卷的容量。
說明所建立儲存卷聲明的容量不能超過待掛載的儲存卷容量。
70 Gi
訪問模式
預設為ReadWriteMany,也可選擇ReadWriteOnce或ReadOnlyMany。
ReadWriteMany
在目標應用中掛載PVC。
將通過CNFS建立的NAS檔案系統掛載到容器中的/data路徑下。
方式三:使用已有的NAS檔案系統建立CNFS
通過kubectl命令列建立
使用CNFS配置已有的NAS檔案系統,並使用NAS靜態儲存卷或NAS動態儲存裝置卷掛載已有的NAS檔案系統,然後將建立的NAS靜態儲存卷或NAS動態儲存裝置卷綁定到工作負載Deployment中。
使用已有的NAS檔案系統建立CNFS。
執行以下內容使用已有的NAS檔案系統建立CNFS。
# 當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
回收策略,CNFS目前僅支援Retain策略,刪除CNFS時並不會刪除NAS檔案系統。
parameters.server
NAS的掛載點URL地址。
執行以下命令查看NAS檔案系統。
kubectl get cnfs
預期輸出:
NAME AGE cnfs-nas-filesystem 6d
執行以下命令查看NAS檔案系統的詳細資料。
kubectl get cnfs/cnfs-nas-filesystem -o yaml
預期輸出:
在NAS儲存卷中應用CNFS。具體操作,請參見方式二:使用CNFS建立自訂NAS檔案系統中通過kubectl建立的步驟2到步驟4。
通過控制台建立
建立容器網路檔案系統CNFS。
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇
。在容器網路檔案系統CNFS頁面,單擊建立容器網路檔案系統。
在建立容器網路檔案系統面板,配置相關參數後,單擊確定。
配置項
說明
樣本
容器網路檔案系統CNFS名稱
CNFS名稱。
cnfs-nas-filesystem
選擇檔案系統類型
選擇要託管的檔案系統類型,支援NAS和OSS。
NAS
必選項
支援建立預設NAS或選擇已有NAS。選擇已有NAS時,您可以選擇已有的NAS掛載點或建立自訂的NAS檔案系統。
選擇檔案系統類型為NAS時,才會顯示該必選項。
選擇已有NAS
選擇NAS
選擇已有的NAS掛載點或單擊右側建立NAS來建立自訂的NAS檔案系統。
必選項為選擇已有NAS時,才會顯示該選項。
選擇已有的NAS掛載點,關於如何查看掛載點,請參見查看掛載點地址。
容器網路檔案系統CNFS描述
CNFS的相關描述資訊。
通過CNFS建立自訂NAS檔案系統
全鏈路加速
是否使用彈性加速特性進行掛載,預設關閉。關於彈性加速特性的更多資訊,請參見開啟CNFS NAS計算端分布式緩衝。
關閉
在NAS儲存卷中應用CNFS。具體操作,請參見方式二:使用CNFS建立自訂NAS檔案系統中通過控制台建立的步驟2到步驟4。
後續步驟
關於如何監控節點側NAS儲存資源,請參見NAS儲存監控使用樣本。