使用CPFS2.0靜態存儲卷
CPFS(Cloud Paralleled File System)是一種并行文件系統。CPFS的數據存儲在集群中的多個數據節點,并可由多個客戶端同時訪問,從而能夠為大型高性能計算機集群提供高IOPS、高吞吐、低時延的數據存儲服務。本文介紹如何在ACK集群中掛載及使用CPFS2.0靜態存儲卷。
前提條件
csi-plugin和csi-provisioner組件版本不低于v1.22.11-abbb810e-aliyun。關于升級CSI-Plugin和CSI-Provisioner組件的操作,請參見升級CSI-Plugin和CSI-Provisioner。
已創建CPFS文件系統,且CPFS版本號不低于2.3.0,最大容量不低于3600 GiB。具體操作,請參見創建文件系統和擴容文件系統。
已通過kubectl工具連接Kubernetes集群。具體操作,請參見獲取集群KubeConfig并通過kubectl工具連接集群。
步驟一:創建協議服務并獲取掛載地址
您需要先創建CPFS文件系統對應的協議服務,并獲取協議服務的掛載地址方便后續在ACK集群中掛載使用。
登錄NAS控制臺,選擇 。
在文件系統列表頁面,單擊目標文件系統名稱。
在文件系統詳情頁面,確認CPFS的版本號大于等于2.3.0,最大容量大于等于3600 GiB,然后單擊協議服務。
在協議服務頁面,單擊創建協議服務,配置如下參數,然后單擊確定。
參數
說明
協議服務配置
選擇協議服務規格,默認為通用型。
說明文件系統容量大于3600 GiB才能創建通用型協議服務。
通用型協議服務的帶寬與CPFS文件系統的帶寬一致,不提供數據緩存,不產生費用。
協議類型
NFSv3協議。
VPC網絡
協議集群使用的VPC網絡,與CPFS文件系統使用的VPC網絡相同,不可修改。
交換機
選擇協議集群使用的vSwitch網絡,默認為CPFS文件系統使用的vSwitch,可配置為該VPC內的其他vSwitch。
說明單個協議服務最多消耗vSwitch上32個IP地址,請確保該vSwitch IP資源充足。
協議導出
指定CPFS文件系統中通過協議服務導出的Fileset或者目錄。推薦使用Fileset導出,具備更強的功能,例如文件數量管理、數據流動。
說明指定導出的Fileset或目錄必須已存在。若Fileset不存在,請先創建Fileset。具體操作,請參見創建Fileset。
使用目錄導出時,目錄格式如下:
長度為1~1024個字符。
使用UTF-8編碼。
必須以正斜線(/)開頭和結尾,導出根目錄為
/
。
導出VPC網絡
選擇與ECS實例相同的VPC。該VPC內的ECS可通過協議服務訪問CPFS文件系統。
導出交換機
選擇與ECS實例相同的交換機,協議集群通過該vSwitch將協議服務導出到指定的導出VPC。
說明單個協議服務最多消耗vSwitch上32個IP地址,請確保該vSwitch IP資源充足。
權限組
僅支持VPC默認權限組。
在協議服務頁面,單擊目標協議服務右側操作列下的導出目錄,然后在彈出的對話框中復制對應的掛載地址并保存。
步驟二:在ACK集群中使用CPFS2.0靜態卷
執行以下命令,配置ConfigMap信息,開啟掛載CPFS2.0時使用的NFS協議。
cat << EOF | kubectl apply -f - apiVersion: v1 kind: ConfigMap metadata: name: csi-plugin namespace: kube-system data: cpfs-nas-enable: "true" #使用CPFS2.0掛載時,使用NFS協議。 EOF
執行以下命令,重啟csi-plugin,安裝相關依賴。
此操作不影響業務正常運行。
kubectl -n kube-system rollout restart daemonset csi-plugin
預期輸出:
daemonset.apps/csi-plugin restarted
執行以下命令,創建PV和PVC。
cat << EOF | kubectl apply -f - apiVersion: v1 kind: PersistentVolume metadata: name: cpfs-pv labels: alicloud-pvname: cpfs-pv spec: accessModes: - ReadWriteOnce capacity: storage: 20Gi csi: driver: nasplugin.csi.alibabacloud.com volumeAttributes: mountProtocol: cpfs-nfs # 掛載時,使用NFS協議進行掛載。 path: "/share" # 掛載目錄必須以/share為前綴。 volumeAs: subpath server: "cpfs-****.regionID.cpfs.aliyuncs.com" # 為掛載點前面的域名。 volumeHandle: cpfs-pv # 必須與PV Name保持一致。 mountOptions: - rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport - vers=3 --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: cpfs-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi selector: matchLabels: alicloud-pvname: cpfs-pv EOF
執行以下命令,創建StatefulSet工作負載并使用CPFS2.0靜態卷。
cat << EOF | kubectl apply -f - apiVersion: apps/v1 kind: StatefulSet metadata: name: cpfs-sts spec: selector: matchLabels: app: nginx serviceName: "nginx" replicas: 1 template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx volumeMounts: - name: cpfs-pvc mountPath: /data volumes: - name: cpfs-pvc persistentVolumeClaim: claimName: cpfs-pvc EOF
執行以下命令,驗證CPFS2.0靜態卷是否掛載成功。
kubectl exec cpfs-sts-0 -- mount | grep /data
預期輸出:
cpfs-****.regionID.cpfs.aliyuncs.com:/share/nas-885ae9e7-9b0e-4f8f-a9ee-6a1bcf1ddb57 on /data type nfs (rw,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,nolock,noresvport,proto=tcp,port=30000,timeo=600,retrans=2,sec=sys,mountaddr=127.0.1.255,mountvers=3,mountport=30000,mountproto=tcp,local_lock=all,addr=127.0.1.255)
有預期輸出結果,說明CPFS2.0靜態卷掛載成功。