Container Service Kubernetes 版CSI支援subpath方式和filesystem方式兩種類型的NAS動態儲存裝置卷掛載,您可以通過Container Service控制台或kubectl兩種方式進行掛載。本文介紹如何使用阿里雲NAS動態儲存裝置卷,以及如何驗證NAS儲存卷的持久化儲存與共用儲存特性。
前提條件
使用情境
對磁碟I/O要求較高的應用。
讀寫效能相對於Object Storage Service高。
實現跨主機檔案分享權限設定,例如可作為檔案伺服器。
使用限制及說明
NAS為共用儲存,可以同時為多個Pod提供共用儲存服務,即一個PVC可以同時被多個Pod使用。
CSI外掛程式不支援SMB掛載。
資料卷掛載協議推薦使用NFSv3,極速型NAS僅支援NFSv3,掛載參數需要添加
nolock
。NAS儲存卷只能掛載到相同VPC的ECS執行個體,不支援不同VPC網路的掛載。
通用NAS與極速NAS在掛載連通性、檔案系統數量及協議類型等方面存在相應約束條件。更多資訊,請參見使用限制。
使用NAS資料卷前,建議將CSI儲存外掛程式升級到最新版本。
NAS掛載點建立後,等待一定時間,待掛載點狀態為可用後方可使用。
在沒有卸載NAS檔案系統前,務必不要刪除NAS掛載點,否則會造成作業系統無響應。
在ACK Serverless叢集中,subpath類型的PV刪除後,相應子目錄的不會自動刪除。也就意味著,當PV的
reclaimPolicy
為Delete
時,即使PV刪除,NAS中實際的目錄檔案也並不會被刪除。如需刪除,需在手動掛載後執行刪除。
注意事項
NAS為共用儲存,可以同時為多個Pod提供共用儲存服務,即一個PVC可以同時被多個應用使用。關於NAS並發寫入的一些限制條件,請參見如何避免多進程或多用戶端並發寫同一記錄檔可能出現的異常?和如何解決向NFS檔案系統中寫入資料延遲問題?
在使用極速NAS檔案系統時,配置動態儲存裝置卷StorageClass中的
path
需要以/share為父目錄。例如,0cd8b4a576-g****.cn-hangzhou.nas.aliyuncs.com:/share/subpath
表示Pod掛載的NAS檔案系統子目錄為/share/subpath
。NAS PVC的容量僅在檔案系統類型為通用型NAS,且StorageClass設定
allowVolumeExpansion
為true
時才會生效。此時,CSI將按照PVC容量設定NAS目錄配額。NAS目錄配額單位為GiB,實際設定的容量上限為PVC容量按GiB單位向上取整。NAS配額的生效是非同步,即PV動態建立後,目錄配額不能保證立即生效,且快速連續寫入大量資料可能會超出設定的容量上限。關於NAS目錄配額的更多資訊,請參見目錄配額。
若您在應用模板中配置了securityContext.fsgroup參數,kubelet在儲存卷掛載完成後會執行
chmod
或chown
操作,導致掛載時間延長。如需減少掛載時間,請參見NAS儲存卷掛載時間延長。
使用NAS動態儲存裝置卷
CSI外掛程式支援使用subpath方式和filesystem方式掛載NAS動態儲存裝置卷,您可以通過控制台和kubectl命令列兩種方式進行操作。
subpath方式:支援通過控制台和kubectl命令列兩種方式操作。
當多個應用或者Pod需要掛載相同的NAS儲存卷共用資料時,或者不同的Pod掛載相同的NAS檔案系統的不同子目錄時,您可以使用subpath方式進行掛載。
filesystem方式:僅支援通過kubectl命令列方式操作。
當您的Kubernetes應用需要動態建立和刪除NAS檔案系統和掛載點時,您可以使用filesystem方式進行掛載。
sharedpath方式:已廢棄。如果您需要多個Pod掛載同一個NAS目錄,請直接使用靜態建立PV的方式。
通過控制台使用subpath類型的NAS動態儲存裝置卷
步驟一:建立檔案系統和掛載點
NAS動態儲存裝置卷的掛載方式為subpath類型時,您需要手動建立NAS檔案系統和掛載點。
登入NAS控制台。
建立NAS檔案系統。具體操作,請參見建立檔案系統。
說明若需要加密NAS儲存卷中的資料,請在建立NAS檔案系統時配置加密類型。
添加掛載點,並且該掛載點與叢集節點在同一VPC內。具體操作,請參見管理掛載點。
步驟二:建立StorageClass
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
在儲存類頁面,單擊右上方的建立。
在建立對話方塊中,完成StorageClass的相關配置。
主要配置項如下所示。
配置項
說明
名稱
StorageClass的名稱。
名稱必須以小寫字母開頭,只能包含小寫字母、數字、小數點(.)和中劃線(-)。
儲存卷類型
可選擇雲端硬碟或NAS。本樣本選擇NAS。
選擇掛載點
NAS檔案系統的掛載點地址。關於如何查看掛載點地址,請參見查看掛載點地址。
若無可選的掛載點地址,請先建立NAS檔案系統。具體操作,請參見通過CNFS管理NAS檔案系統(推薦)。
回收策略
回收策略。支援Delete和Retain模式, 預設為Delete模式
Delete模式:需配合
archiveOnDelete
一起使用。當
archiveOnDelete
為true
時,刪除PVC時,PV和NAS檔案只會被重新命名,不會被刪除。當
archiveOnDelete
為false
時,刪除PVC時,PV和NAS檔案會被真正刪除。
Delete模式:刪除PVC時,會自動刪除PV,但不會實際刪除NAS的對應目錄。這是因為在ACK Serverless叢集中, csi-provisioner組件無法使用Linux特權,所以無法掛載檔案系統進行目錄的刪除或重新命名。
Retain模式:刪除PVC時,PV和NAS檔案系統不會被刪除,需要您手動刪除。
如果對資料安全性要求較高,推薦使用Retain模式,以免誤刪資料。
掛載選項
掛載NAS的選擇性參數,包括NFS協議版本等參數。
NFS協議版本號碼推薦使用v3,且極速類型NAS僅支援v3。關於NFS協議的更多資訊,請參見NFS協議。
掛載路徑
NAS檔案系統中的掛載路徑。
參數配置完成後,單擊建立。
建立成功後,可在儲存類列表查看建立的StorageClass。
步驟三:建立PVC
在叢集管理頁左側導覽列,選擇 。
在儲存聲明頁面,單擊右上方的建立。
在彈出的建立儲存聲明頁面中,完成相關配置。
配置項
說明
儲存宣告類型
支援雲端硬碟、NAS、OSS三種雲端儲存類型。本樣本選擇NAS。
名稱
建立的儲存聲明名稱在叢集內必須唯一。
分配模式
本文中選擇使用儲存類動態建立。
已有儲存類
單擊選擇儲存類,在選擇儲存類對話方塊目標儲存類右側操作列單擊選擇。
總量
建立儲存卷的容量。
訪問模式
預設為ReadWriteMany,也可選擇ReadWriteOnce或ReadOnlyMany。
單擊建立。
步驟四:建立應用
在叢集管理頁左側導覽列,選擇 。
在無狀態頁面,單擊使用鏡像建立。
配置建立應用的參數資訊。
本機存放區:支援主機目錄(HostPath)、配置項(ConfigMap)、保密字典(Secret)和臨時目錄,將對應的掛載源掛載到容器路徑中。更多資訊,請參見Volumes。
雲端儲存:支援雲端儲存類型。
配置完成後,單擊建立。
以下主要為您介紹資料卷的配置。關於其他參數的描述,請參見建立無狀態工作負載Deployment。
ACK資料卷支援配置本機存放區和雲端儲存。
本例中配置了一個NAS類型的資料卷,將該NAS儲存卷掛載到容器中/tmp路徑下。
通過kubectl使用subpath類型的NAS動態儲存裝置卷
NAS動態儲存裝置卷的掛載方式為subpath類型時,您需要手動建立NAS檔案系統和掛載點。
建立NAS檔案系統和掛載點。
建立StorageClass。
建立並複製以下內容到alicloud-nas-subpath.yaml檔案中。
allowVolumeExpansion: true apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: alicloud-nas-subpath mountOptions: - nolock,tcp,noresvport - vers=3 parameters: volumeAs: subpath server: "0cd8b4a576-g****.cn-hangzhou.nas.aliyuncs.com:/k8s/" provisioner: nasplugin.csi.alibabacloud.com reclaimPolicy: Retain
參數
描述
allowVolumeExpansion
僅通用型NAS檔案系統支援設定此參數。開啟時,該StorageClass動態建立的PV將會被配置NAS目錄配額,並支援通過編輯PVC進行卷容量擴容。
mountOptions
掛載NAS的
options
參數在mountOptions
中配置,包括NFS協議版本。volumeAs
可選
subpath
、filesystem
,分別表示建立子目錄類型的PV和檔案系統類型的PV。server
表示建立子目錄類型的PV時,NAS檔案系統的掛載點地址。
重要此處需替換為實際的掛載點地址,關於如何查看掛載點地址,請參見查看掛載點地址。
provisioner
驅動類型。本例中取值為
nasplugin.csi.alibabacloud.com
,表示使用阿里雲NAS CSI外掛程式。reclaimPolicy
PV的回收策略,預設為
Delete
,支援Retain
。Delete模式:需配合
archiveOnDelete
一起使用。當
archiveOnDelete
為true
時,刪除PVC時,PV和NAS檔案只會被重新命名,不會被刪除。當
archiveOnDelete
為false
時,刪除PVC時,PV和NAS檔案會被真正刪除。
Retain模式:刪除PVC的時候,PV和NAS檔案系統不會被刪除,需要您手動刪除。
如果資料安全性要求高,推薦使用
Retain
方式以免誤刪資料。archiveOnDelete
表示在
reclaimPolicy
為Delete
時,是否刪除後端儲存。因為NAS為共用儲存,添加此選項進行雙重確認。在參數parameters
下配置。預設為
true
,表示不會真正刪除目錄或檔案,而是將其重新命名,格式為archived-{pvName}.{timestamp}
。若配置為
false
,表示會真正刪除後端對應的儲存資源。
說明業務流量非常大時,不建議配置為false。更多資訊,請參見使用NAS動態儲存裝置卷時Controller的任務隊列已滿且無法建立新的PV。
執行以下命令建立StorageClass。
kubectl create -f alicloud-nas-subpath.yaml
執行以下命令建立PVC。
建立並複製以下內容到pvc.yaml檔案中。
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: nas-csi-pvc spec: accessModes: - ReadWriteMany storageClassName: alicloud-nas-subpath resources: requests: storage: 20Gi
參數
說明
name
PVC的名稱。
accessModes
配置訪問模式。預設為
ReadWriteMany
,也可選擇ReadWriteOnce
或ReadOnlyMany
。storageClassName
StorageClass的名稱,用於綁定StorageClass。
storage
聲明應用儲存使用量。
重要此處設定的容量值不會限制應用實際可以使用的容量,且不會自動擴容。僅當使用通用型NAS,且StorageClass的
allowVolumeExpansion
為true時,才會為NAS目錄設定配額。執行以下命令建立PVC。
kubectl create -f pvc.yaml
執行以下命令建立應用。
建立應用nginx-1和nginx-2共用NAS儲存卷的同一個子目錄。
建立並複製以下內容到nginx-1.yaml檔案中。
apiVersion: apps/v1 kind: Deployment metadata: name: deployment-nas-1 labels: app: nginx-1 spec: selector: matchLabels: app: nginx-1 template: metadata: labels: app: nginx-1 spec: containers: - name: nginx image: nginx:1.7.9 ports: - containerPort: 80 volumeMounts: - name: nas-pvc mountPath: "/data" volumes: - name: nas-pvc persistentVolumeClaim: claimName: nas-csi-pvc
mountPath
:NAS在容器中掛載的位置。claimName
:PVC的名稱,用於綁定PVC。本例中為nas-csi-pvc。
建立並複製以下內容到nginx-2.yaml檔案中。
apiVersion: apps/v1 kind: Deployment metadata: name: deployment-nas-2 labels: app: nginx-2 spec: selector: matchLabels: app: nginx-2 template: metadata: labels: app: nginx-2 spec: containers: - name: nginx image: nginx:1.7.9 ports: - containerPort: 80 volumeMounts: - name: nas-pvc mountPath: "/data" volumes: - name: nas-pvc persistentVolumeClaim: claimName: nas-csi-pvc
mountPath
:NAS在容器中掛載的位置。本例為/data。claimName
:輸入與nginx-1應用相同的PVC名稱,本例為nas-csi-pvc。
執行以下命令建立應用nginx-1和nginx-2。
kubectl create -f nginx-1.yaml -f nginx-2.yaml
執行以下命令查看Pod資訊。
kubectl get pod
預期輸出:
NAME READY STATUS RESTARTS AGE deployment-nas-1-5b5cdb85f6-n**** 1/1 Running 0 32s deployment-nas-2-c5bb4746c-4**** 1/1 Running 0 32s
說明NAS儲存卷的
0cd8b4a576-g****.cn-hangzhou.nas.aliyuncs.com:/share/nas-79438493-f3e0-11e9-bbe5-00163e09****
會同時掛載到deployment-nas-1-5b5cdb85f6-n****
和deployment-nas-2-c5bb4746c-4****
的/data目錄下。其中:/share
:StorageClass中指定的subpath。nas-79438493-f3e0-11e9-bbe5-00163e09****
:PV的名稱。
如果您需要為不同的Pod掛載同一個NAS檔案系統的不同子目錄,則需要分別建立pvc-1和nginx-1以及pvc-2和nginx-2。
通過kubectl使用filesystem類型的NAS動態儲存裝置卷
filesystem類型的NAS動態磁碟區在刪除時預設保留檔案系統和掛載點,如需在釋放PV資源的同時釋放NAS檔案系統和掛載點,則需要同時設定StorageClass中的reclaimPolicy
為Delete
且deleteVolume
的值為true
。
使用filesystem類型NAS儲存卷的Pod只能建立一個檔案系統和一個掛載點。
僅ACK專有叢集需執行以下全部步驟,其他類型叢集從步驟2開始執行至結束。
可選:RAM Policy設定和授予。
如果您的叢集是ACK專有叢集,則需要執行本步驟。
filesystem類型的NAS儲存卷涉及NAS檔案系統和掛載點的動態建立與刪除,ACK專有叢集需要授予csi-provisioner相應的許可權,RAM Policy的最小集合如下。
{ "Action": [ "nas:DescribeMountTargets", "nas:CreateMountTarget", "nas:DeleteFileSystem", "nas:DeleteMountTarget", "nas:CreateFileSystem" ], "Resource": [ "*" ], "Effect": "Allow" }
您可以通過以下任意一種方式進行授權:
編輯ACK專有叢集的Master RAM角色中的自訂策略內容,添加以上NAS相關的使用權限設定。請參見修改自訂權限原則內容和備忘。
建立RAM使用者並授權以上RAM Policy並產生AccessKey,配置到csi-provisioner的
env
變數中。env: - name: CSI_ENDPOINT value: unix://socketDir/csi.sock - name: ACCESS_KEY_ID value: "" - name: ACCESS_KEY_SECRET value: ""
建立StorageClass。
建立並複製以下內容到alicloud-nas-fs.yaml檔案中。
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: alicloud-nas-fs mountOptions: - nolock,tcp,noresvport - vers=3 parameters: volumeAs: filesystem fileSystemType: standard storageType: Performance regionId: cn-beijing zoneId: cn-beijing-e vpcId: "vpc-2ze2fxn6popm8c2mzm****" vSwitchId: "vsw-2zwdg25a2b4y5juy****" accessGroupName: DEFAULT_VPC_GROUP_NAME deleteVolume: "false" provisioner: nasplugin.csi.alibabacloud.com reclaimPolicy: Retain
參數
描述
volumeAs
定義建立資料的類型,可選filesystem和subpath兩種類型:
filesystem表示Provisioner自動建立NAS檔案系統,一個PV對應一個NAS檔案系統。
subpath類型表示一個PV對應一個NAS檔案系統的子目錄,Provisioner自動建立NAS檔案系統的子目錄。
fileSystemType
定義建立NAS檔案系統的類型。可選standard和extreme兩種類型:
standard:通用型NAS。
extreme:極速型NAS。
預設為通用型NAS。
storageType
定義建立NAS檔案系統的儲存規格類型。
當fileSystemType=standard時,可選Performance(效能型)和Capacity(容量型)兩種類型,預設為效能型。
當fileSystemType=extreme時,可選standard(標準型)和advanced(進階型)兩種類型,預設為標準型。
regionId
定義建立NAS檔案系統所在地區。
zoneId
定義建立NAS檔案系統所在可用性區域。
vpcId
定義建立NAS檔案系統對應掛載點所在VPC。
vSwitchId
定義建立NAS檔案系統對應掛載點所在vSwitch ID。
accessGroupName
定義建立NAS檔案系統對應掛載點所用的AccessGroup。預設為DEFAULT_VPC_GROUP_NAME。
deleteVolume
定義資料卷刪除時處理NAS檔案系統策略,由於NAS為共用檔案系統,安全起見需要同時配置。
provisioner
驅動類型。本例中取值為
nasplugin.csi.alibabacloud.com
,表示使用阿里雲NAS CSI外掛程式。reclaimPolicy
PV的回收策略。當值為Delete且deleteVolume為true時,才會在刪除PVC的時候將NAS檔案系統刪除。
執行以下命令建立StorageClass。
kubectl create -f alicloud-nas-fs.yaml
建立PVC和Pod掛載NAS儲存卷。
建立並複製以下內容到pvc.yaml檔案中。
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: nas-csi-pvc-fs spec: accessModes: - ReadWriteMany storageClassName: alicloud-nas-fs resources: requests: storage: 20Gi
建立並複製以下內容到nginx.yaml檔案中。
apiVersion: apps/v1 kind: Deployment metadata: name: deployment-nas-fs labels: app: nginx spec: selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.7.9 ports: - containerPort: 80 volumeMounts: - name: nas-pvc mountPath: "/data" volumes: - name: nas-pvc persistentVolumeClaim: claimName: nas-csi-pvc-fs
執行以下命令建立PVC和Pod。
kubectl create -f pvc.yaml -f nginx.yaml
這種情境下,CSI會在PVC建立時動態建立NAS檔案系統和掛載點,PVC刪除時動態刪除掛載點和檔案系統。
驗證NAS的儲存特性
您可以通過以下樣本,分別驗證NAS的持久化儲存和共用儲存特性。
驗證NAS的持久化儲存
NAS提供了持久化儲存服務,當某個Pod被刪除時,重新部署的Pod將自動同步之前Pod的所有資料。根據以下樣本驗證NAS的持久化儲存特性:
查看部署應用的Pod和NAS檔案。
執行以下命令,查看部署的應用所在Pod的名稱。
kubectl get pod
預期輸出:
NAME READY STATUS RESTARTS AGE deployment-nas-1-5b5cdb85f6-n**** 1/1 Running 0 32s deployment-nas-2-c5bb4746c-4**** 1/1 Running 0 32s
執行以下命令,查看任意一個Pod/data路徑下的檔案,本文以名為
deployment-nas-1-5b5cdb85f6-n****
的Pod為例。kubectl exec deployment-nas-1-5b5cdb85f6-n**** -- ls /data
無返回結果,表明/data路徑下無檔案。
執行以下命令,在名為
deployment-nas-1-5b5cdb85f6-n****
的Pod/data路徑下建立檔案nas。kubectl exec deployment-nas-1-5b5cdb85f6-n**** -- touch /data/nas
執行以下命令,查看名為
deployment-nas-1-5b5cdb85f6-n****
的Pod/data路徑下的檔案。kubectl exec deployment-nas-1-5b5cdb85f6-n**** -- ls /data
預期輸出:
nas
執行以下命令,刪除Pod。
kubectl delete pod deployment-nas-1-5b5cdb85f6-n****
同時在另一個視窗中,執行以下命令,查看Pod刪除及Kubernetes重建Pod的過程。
kubectl get pod -w -l app=nginx
驗證刪除Pod後,NAS裡建立的檔案是否還存在。
執行以下命令,查看Kubernetes重建的Pod名稱。
kubectl get pod
預期輸出:
NAME READY STATUS RESTARTS AGE deployment-nas-1-5b5cdm2g5-m**** 1/1 Running 0 32s deployment-nas-2-c5bb4746c-4**** 1/1 Running 0 32s
執行以下命令,查看名為
deployment-nas-1-5b5cdm2g5-m****
的Pod/data路徑下的檔案。kubectl exec deployment-nas-1-5b5cdm2g5-m**** -- ls /data
預期輸出:
nas
nas
檔案仍然存在,說明NAS的資料可持久化儲存。
驗證NAS的共用儲存
NAS儲存卷支援同時被多個Pod掛載,當某個Pod修改資料時,其餘Pod將自行實現資料的同步,根據以下樣本驗證NAS儲存卷的共用儲存特性:
查看部署的應用所在的Pod和NAS檔案。
執行以下命令,查看應用所在的Pod名稱。
kubectl get pod
預期輸出:
NAME READY STATUS RESTARTS AGE deployment-nas-1-5b5cdb85f6-n**** 1/1 Running 0 32s deployment-nas-2-c5bb4746c-4**** 1/1 Running 0 32s
執行以下命令,查看2個Pod/data路徑下的檔案。
kubectl exec deployment-nas-1-5b5cdb85f6-n**** -- ls /data kubectl exec deployment-nas-2-c5bb4746c-4**** -- ls /data
執行以下命令,在任意一個Pod的/data路徑下建立檔案nas。
kubectl exec deployment-nas-1-5b5cdb85f6-n**** -- touch /data/nas
執行以下命令,查看2個Pod/data路徑下的檔案。
執行以下命令,查看名為
deployment-nas-1-5b5cdb85f6-n****
的Pod/data路徑下的檔案。kubectl exec deployment-nas-1-5b5cdb85f6-n**** -- ls /data
預期輸出:
nas
執行以下命令,查看名為
deployment-nas-2-c5bb4746c-4****
的Pod /data路徑下的檔案。kubectl exec deployment-nas-2-c5bb4746c-4**** -- ls /data
預期輸出:
nas
在任意一個Pod的/data下建立的檔案,兩個Pod下的/data路徑下均存在此檔案,說明兩個Pod共用一個NAS。
如何?NAS的使用者或使用者組隔離
為確保不同使用者和使用者組之間資料的安全性,您可以參考以下操作對NAS的使用者或使用者組進行隔離。
使用以下YAML內容,在容器組內使用nobody使用者啟動進程,建立的目錄UID和GID為65534。
apiVersion: apps/v1 kind: StatefulSet metadata: name: nas-sts spec: selector: matchLabels: app: busybox serviceName: "busybox" replicas: 1 template: metadata: labels: app: busybox spec: securityContext: fsGroup: 65534 #建立目錄/檔案時,UID/GID為65534(nobody使用者)。 fsGroupChangePolicy: "OnRootMismatch" #只有根目錄的屬主與存取權限與卷所期望的許可權不一致時, 才改變其中內容的屬主和存取權限。 containers: - name: busybox image: busybox command: - sleep - "3600" securityContext: runAsUser: 65534 #所有容器內的進程都使用使用者ID為65534(nobody使用者)來運行。 runAsGroup: 65534 #所有容器中的進程都以主組ID為65534(nobody使用者)來運行。 allowPrivilegeEscalation: false volumeMounts: - name: nas-pvc mountPath: /data volumeClaimTemplates: - metadata: name: nas-pvc spec: accessModes: [ "ReadWriteOnce" ] storageClassName: "alicloud-nas-subpath" resources: requests: storage: 100Gi
執行以下命令,在容器中啟動
top
命令,查看USER是否為nobody。kubectl exec nas-sts-0 -- "top"
預期輸出:
Mem: 11538180K used, 52037796K free, 5052K shrd, 253696K buff, 8865272K cached CPU: 0.1% usr 0.1% sys 0.0% nic 99.7% idle 0.0% io 0.0% irq 0.0% sirq Load average: 0.76 0.60 0.58 1/1458 54 PID PPID USER STAT VSZ %VSZ CPU %CPU COMMAND 49 0 nobody R 1328 0.0 9 0.0 top 1 0 nobody S 1316 0.0 10 0.0 sleep 3600
預期輸出表明,是
nobody
使用者執行的top
命令。執行以下命令,驗證在NAS掛載目錄下建立的目錄和檔案是否為
nobody
。kubectl exec nas-sts-0 -- sh -c "touch /data/test; mkdir /data/test-dir; ls -arlth /data/"
預期輸出:
total 5K drwxr-xr-x 1 root root 4.0K Aug 30 10:14 .. drwxr-sr-x 2 nobody nobody 4.0K Aug 30 10:14 test-dir -rw-r--r-- 1 nobody nobody 0 Aug 30 10:14 test drwxrwsrwx 3 root nobody 4.0K Aug 30 10:14 .
預期輸出表明,在
/data
下建立的test檔案和test-dir目錄中,UID和GID對應的使用者均為nobody使用者。
相關文檔
如需使用CNFS託管NAS檔案系統,請參見建立CNFS管理NAS檔案系統(推薦)、通過CNFS管理NAS檔案系統(推薦)。
如需動態擴容NAS儲存卷,請參見使用CNFS自動擴容NAS儲存卷。
如需通過NAS的目錄配額功能,實現對儲存卷空間的有效控制。請參見擴容NAS儲存卷容量。