配置NAS NFS存儲(chǔ)卷容量
阿里云容器服務(wù)CSI支持對(duì)NAS卷的子目錄進(jìn)行配額限制。通過(guò)配額限制,可以確保您在資源分配的基礎(chǔ)上,提升整體資源的利用率。當(dāng)磁盤配額達(dá)到上限時(shí),您還可以通過(guò)手動(dòng)在線擴(kuò)容的方式對(duì)存儲(chǔ)卷進(jìn)行擴(kuò)容且不影響業(yè)務(wù)運(yùn)行。
前提條件
csi-plugin的鏡像版本不低于v1.18.8.45。關(guān)于csi-plugin的版本說(shuō)明,請(qǐng)參見csi-plugin。
NAS存儲(chǔ)卷需要使用子目錄進(jìn)行掛載。
背景信息
關(guān)于NAS卷的管理配額,請(qǐng)參見目錄配額。
使用限制
目前僅容量型NAS支持使用配額限制,其他NAS類型均不支持。關(guān)于NAS存儲(chǔ)卷的規(guī)格類型,請(qǐng)參見NAS規(guī)格類型。
NAS靜態(tài)存儲(chǔ)卷不支持?jǐn)U容。
僅支持子目錄掛載方式設(shè)置配額。
對(duì)于單個(gè)文件系統(tǒng),最多允許對(duì)500個(gè)目錄設(shè)置配額。
設(shè)置限制性配額后,如果文件使用量超過(guò)限制,會(huì)導(dǎo)致增加文件長(zhǎng)度、創(chuàng)建文件、目錄和特殊文件,移動(dòng)文件到目錄等寫入操作失敗,應(yīng)用層會(huì)收到IOError。
由于限制型配額的高風(fēng)險(xiǎn)性,強(qiáng)烈建議您在業(yè)務(wù)關(guān)鍵路徑上謹(jǐn)慎評(píng)估和測(cè)試驗(yàn)證后,再配置限制型配額。
NAS配額的設(shè)置為異步執(zhí)行,因此限制型配額的生效和失效都有延遲,正常情況下需要等待5~15分鐘。
使用示例
使用以下YAML內(nèi)容,創(chuàng)建帶有配額子目錄NAS的StorageClass,并開啟允許擴(kuò)容策略。
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: alicloud-nas-quota-sc mountOptions: - nolock,tcp,noresvport - vers=3 parameters: volumeAs: subpath server: "xxx.cn-hangzhou.nas.aliyuncs.com:/" archiveOnDelete: "false" path: "/abc" volumeCapacity: "true" # 創(chuàng)建動(dòng)態(tài)卷帶有配額能力。 provisioner: nasplugin.csi.alibabacloud.com reclaimPolicy: Delete allowVolumeExpansion: true # 開啟允許動(dòng)態(tài)卷擴(kuò)容能力。
參數(shù)
描述
mountOptions
掛載NAS的options參數(shù)在mountOptions中配置,包括NFS協(xié)議版本。
volumeAs
可選的subpath、filesystem,分別表示創(chuàng)建子目錄類型的PV和文件系統(tǒng)類型的PV。
server
表示創(chuàng)建子目錄類型的PV時(shí),NAS文件系統(tǒng)的掛載點(diǎn)地址。
archiveOnDelete
表示在reclaimPolicy為Delete時(shí),是否刪除后端存儲(chǔ)。因?yàn)?span id="z68uejxpaoma" class="help-letter-space">NAS為共享存儲(chǔ),添加此選項(xiàng)進(jìn)行雙重確認(rèn)。默認(rèn)為true。
path
表示掛載子目錄,極速NAS需要以/share開頭。
volumeCapacity
表示是否使用配額。可選值為:true,false。
說(shuō)明若開啟了
allowVolumeExpansion
,則該參數(shù)配置不會(huì)生效,配額將始終開啟。provisioner
表示ACK動(dòng)態(tài)卷控制器名稱。
reclaimPolicy
表示PV的回收策略。可選值為:
Retain
:保留后端存儲(chǔ),刪除PV及PVC不會(huì)刪除對(duì)應(yīng)的后端存儲(chǔ),例如云盤。Delete
:當(dāng)刪除PVC時(shí),自動(dòng)刪除PV和后端的存儲(chǔ)。
allowVolumeExpansion
表示是否支持NAS存儲(chǔ)卷的擴(kuò)容。
說(shuō)明創(chuàng)建帶有配額子目錄NAS的StorageClass,需要開啟配額功能,即
volumeCapacity=true
或者allowVolumeExpansion=true
。使用以下YAML內(nèi)容,創(chuàng)建StatefulSet,包含容量大小為20 GiB的PVC。
apiVersion: apps/v1 kind: StatefulSet metadata: name: nas-sts spec: selector: matchLabels: app: busybox serviceName: "busybox" replicas: 1 template: metadata: labels: app: busybox spec: containers: - name: busybox image: busybox command: - sleep - "3600" volumeMounts: - name: nas-pvc mountPath: /data volumeClaimTemplates: - metadata: name: nas-pvc spec: accessModes: [ "ReadWriteMany" ] storageClassName: "alicloud-nas-quota-sc" resources: requests: storage: 20Gi
結(jié)果驗(yàn)證
執(zhí)行以下命令,向步驟2StatefulSet掛載的/data目錄寫入10 GiB數(shù)據(jù)。
dd if=/dev/zero of=10G.txt bs=1M count=10000
等待5~15分鐘后,查看子目錄的配額詳情。
登錄NAS控制臺(tái)。
在控制臺(tái)左側(cè)導(dǎo)航欄,單擊 。
選擇目標(biāo)文件系統(tǒng)操作列下,然后單擊配額管理。
在目標(biāo)文件系統(tǒng)的配額管理頁(yè)面,單擊操作列的管理配額。
可以看到子目錄的容量限制為20 GiB,當(dāng)前容量為9 GiB。
當(dāng)此子目錄寫滿20 GiB,再寫入數(shù)據(jù)時(shí),會(huì)提示超過(guò)磁盤配額,即
Disk quota exceeded
。
當(dāng)磁盤配額達(dá)到上限時(shí),可以通過(guò)手動(dòng)在線擴(kuò)容的方式對(duì)存儲(chǔ)卷進(jìn)行擴(kuò)容。
執(zhí)行以下命令,進(jìn)行數(shù)據(jù)卷擴(kuò)容。
說(shuō)明此操作不影響在線業(yè)務(wù),不會(huì)中斷業(yè)務(wù)。
kubectl patch pvc nas-pvc-0 -p '{"spec":{"resources":{"requests":{"storage":"30Gi"}}}}'
執(zhí)行以下命令,查看PV信息。
kubectl get pv
預(yù)期輸出:
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE nas-63c37cc2-b21e-4b56-b26f-**** 30Gi RWX Delete Bound default/nas-pvc-0 alicloud-nas-quota-sc 25m23s
執(zhí)行以下命令,查看PVC信息。
kubectl get pvc
預(yù)期輸出:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE nas-pvc-0 Bound nas-63c37cc2-b21e-4b56-b26f-**** 30Gi RWX alicloud-nas-quota-sc 25m10s