Container Service Kubernetes 版支援以NAS共用儲存卷的方式掛載和使用CNFS。通過CNFS管理NAS共用儲存卷,您可以在多個應用或Pod之間掛載同一個NAS檔案系統的相同目錄,以解決Pod之間共用資料的問題。本文以StatefulSet類型應用為例介紹如何使用CNFS管理NAS共用儲存卷。
前提條件
已開通Apsara File Storage NAS服務。
首次登入Apsara File Storage NAS產品詳情頁時,按照頁面引導開通服務。
已建立Kubernetes叢集,Kubernetes版本為v1.20及以上,且儲存外掛程式選擇為CSI。具體操作,請參見建立Kubernetes託管版叢集。
CSI-Plugin和CSI-Provisioner組件版本不低於v1.24.11-5221f79-aliyun。關於升級CSI-Plugin和CSI-Provisioner組件的操作,請參見管理CSI組件。
storage-operator組件版本不低於v1.24.105-825188d-aliyun。關於升級storage-operator組件的操作,請參見管理組件。
已通過kubectl工具串連Kubernetes叢集。具體操作,請參見擷取叢集KubeConfig並通過kubectl工具串連叢集。
說明關於什麼是容器網路檔案系統CNFS,請參見容器網路檔案系統CNFS概述。
關於如何使用CNFS託管NAS檔案系統,請參見通過CNFS方式使用NAS檔案系統。
步驟一:建立共用儲存卷的工作負載
建立名為
cnfs-nas-static-pv
的PV,PV中引用名稱為cnfs-nas-filesystem
的CNFS,該CNFS為您已建立的NAS檔案名稱。建立名為
cnfs-nas-static-pvc
的PVC,將PV和PVC進行綁定。建立名為
cnfs-nas-static-sts
的StatefulSet,StatefulSet中使用busybox鏡像掛載PVC,並將1 G的臨時資料1G.tmpfile
寫入掛載點中。
步驟二:查看掛載情況
執行以下命令,查看掛載情況。
kubectl exec cnfs-nas-static-sts-0 -- mount |grep nfs
預期輸出:
971134b0e8-****.cn-zhangjiakou.nas.aliyuncs.com:/ on /data type nfs (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other)
預期輸出顯示有掛載點,說明掛載成功。
步驟三:查看持久化資料是否寫入成功
執行以下命令,寫入1 G的臨時檔案。
kubectl exec cnfs-nas-static-sts-0 -ti -- sh -c 'dd if=/dev/zero of=/data/1G.tmpfile bs=1G count=1;'
執行以下命令,查看1 G的臨時檔案是否寫入成功。
kubectl exec cnfs-nas-static-sts-0 -- ls -arlth /data
預期輸出:
total 1G
-rw-r--r-- 1 root root 1.0G Dec 15 12:11 1G.tmpfile
預期輸出表明,在/data下已經成功寫入1 G的臨時檔案1G.tmpfile
。
步驟四:查看寫入的資料是否在其他Pod內共用
執行以下命令,查看寫入的1 G的臨時檔案是否在其他Pod cnfs-nas-static-sts-1中共用。
kubectl exec cnfs-nas-static-sts-1 -- ls -arlth /data
預期輸出:
total 1G
-rw-r--r-- 1 root root 1.0G Dec 15 12:11 1G.tmpfile
預期輸出表明,在Pod cnfs-nas-static-sts-0與Pod cnfs-nas-static-sts-1中共用寫入了1 G的臨時檔案1G.tmpfile
。
在不同的Pod中寫入共用儲存資料時,CNFS不保證資料的一致性,避免多次寫入同一檔案,以免對檔案造成損壞。
相關文檔
如果您需要在多個應用或Pod之間掛載NAS檔案系統中的不同目錄以實現儲存隔離,請參見使用CNFS管理NAS隔離儲存卷(推薦)。
如果您需要實現NAS儲存卷的使用率高於某個閾值時觸發自動擴容,請參見使用CNFS自動擴容NAS儲存卷。