Container Storage Interface (CSI) eklentisi, Genel Amaçlı NAS birimlerinin alt dizinlerinde dizin kotalarını destekler. NAS alt dizinlerini subPath yöntemiyle bağladığınızda, dizin kotaları her alt dizinin kapasitesini bağımsız olarak sınırlandırır; böylece bir uygulama başka bir uygulamaya ayrılan depolama alanını tüketemez. Bir alt dizin kota sınırına ulaştığında, PVC'yi güncelleyerek çevrimiçi olarak genişletebilirsiniz. Yeniden başlatma veya hizmet kesintisi gerekmez.
NAS yönetimi için CNFS kullanıyorsanız, dizin kotası özelliği varsayılan olarak etkindir. Daha fazla bilgi için bkz. NAS birimlerini otomatik olarak genişletmek için CNFS kullanma .
Sınırlamalar
Dizin kotaları yalnızca aşağıdaki tüm koşulları karşılayan dinamik olarak sağlanan NAS birimleri için desteklenir:
Protokol: NFS
NAS türü: Genel Amaçlı NAS
Bağlama yöntemi: subPath
Statik olarak sağlanan NAS birimleri ve sharepath veya filesystem yöntemiyle bağlanan dinamik olarak sağlanan NAS birimleri dizin kotalarını desteklemez.
Dizin kotası sınırlamalarının tam listesi için bkz. Dizin kotaları .
Kullanım senaryoları
Varsayılan olarak, bir ACK kümesinde bir NAS birimi bağladığınızda, kalıcı birim talebinde (PVC) belirtilen depolama değeri etkili olmaz. Pod, NAS dosya sisteminin tam kapasitesine erişebilir. NAS dosya sistemi birden çok uygulama arasında paylaşılıyorsa, dizin kotalarını şu amaçlarla kullanın:
Her uygulama alt dizini için bir kapasite sınırı belirleme
Çalışan hizmetleri kesintiye uğratmadan bir alt dizinin kotasını çevrimiçi olarak genişletme
Kaynak kullanımını iyileştirme ve depolama maliyetlerini kontrol etme
Farklı NAS türlerinin farklı kapasite sınırları vardır. Daha fazla bilgi için bkz. Genel Amaçlı NAS ve Extreme NAS .
Ön koşullar
Başlamadan önce şunlara sahip olduğunuzdan emin olun:
Kümenizde v1.18.8.45 veya sonraki bir sürümde yüklü CSI eklentisi. Yükseltme yapmak için bkz. csi-plugin ve csi-provisioner güncelleme
NFS bağlama hedefine sahip bir Genel Amaçlı NAS dosya sistemi. Yoksa, Genel Amaçlı NAS dosya sistemi oluşturma
Küme düğümlerinizle aynı VPC içinde, Status durumu Active olarak ayarlanmış bir bağlama hedefi. Yoksa, yeni bir bağlama hedefi oluşturun. Daha fazla bilgi için bkz. Bağlama hedeflerini yönetme
Dizin kotalarıyla dinamik olarak sağlanan NAS birimlerini kullanma
1. Adım: Dizin kotaları etkinleştirilmiş bir StorageClass oluşturma
-
Aşağıdaki YAML içeriğini
alicloud-nas-quota-sc.yamlolarak kaydedin.serverdeğerini NAS dosya sisteminizin bağlama hedefi adresiyle değiştirin.Dizin kotası özelliğini etkinleştirmek için
allowVolumeExpansionveyavolumeCapacityparametresinitrueolarak ayarlayın.allowVolumeExpansiondeğeritrueise,volumeCapacityparametresi etkili olmaz ancak dizin kotası özelliği etkin kalır.Parametre Açıklama volumeAssubpatholarak ayarlanmalıdır. Bir NAS alt dizinini PV olarak bağlar.serverNAS dosya sisteminin bağlama hedefi adresi. Bkz. Bağlama hedeflerini yönetme. pathBağlanacak NAS alt dizini. Varsayılan değer /şeklindedir. Extreme NAS için/shareile başlamalıdır.volumeCapacityDizin kotalarını etkinleştirmek için "true"olarak ayarlayın.allowVolumeExpansiondeğeritrueise, bu parametre etkili olmaz ancak kota etkin kalır.allowVolumeExpansionDizin kotalarını etkinleştirmek ve çevrimiçi PVC genişletmeye izin vermek için trueolarak ayarlayın. Yalnızca Genel Amaçlı NAS için kullanılabilir.apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: alicloud-nas-quota-sc mountOptions: - nolock,tcp,noresvport - vers=3 parameters: volumeAs: subpath # Mount a subdirectory as a persistent volume (PV). Required for directory quotas. server: "0cd8b4a576-g****.cn-hangzhou.nas.aliyuncs.com" # Mount target address archiveOnDelete: "false" path: "/test" # Root subdirectory. Default: /. For Extreme NAS, must start with /share. volumeCapacity: "true" # Enables the directory quota feature. provisioner: nasplugin.csi.alibabacloud.com reclaimPolicy: Delete allowVolumeExpansion: true # Allows online PVC expansion. When set to true, volumeCapacity has no effect but directory quotas remain enabled.Temel parametreler: Tüm parametreler için bkz. Dinamik olarak sağlanan NAS birimlerini kullanma.
-
StorageClass'ı oluşturun.
kubectl apply -f alicloud-nas-quota-sc.yaml
2. Adım: NAS birimli bir uygulama dağıtma
-
Aşağıdaki YAML içeriğini
nas-sts.yamlolarak kaydedin. Aşağıdaki StatefulSet, dizin kotaları etkinleştirilmiş StorageClass tarafından desteklenen, 20 GiB boyutunda dinamik olarak sağlanmış bir NAS birimine sahip tek bir pod oluşturur.apiVersion: apps/v1 kind: StatefulSet metadata: name: nas-sts spec: selector: matchLabels: app: nginx replicas: 1 template: metadata: labels: app: nginx spec: containers: - name: nginx image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6 volumeMounts: - name: nas-pvc mountPath: /data volumeClaimTemplates: - metadata: name: nas-pvc spec: accessModes: [ "ReadWriteMany" ] storageClassName: "alicloud-nas-quota-sc" resources: requests: storage: 20Gi -
StatefulSet'i oluşturun.
kubectl apply -f nas-sts.yaml -
Pod'un çalıştığını doğrulayın.
kubectl get pod -l app=nginxBeklenen çıktı:
NAME READY STATUS RESTARTS AGE nas-sts-0 1/1 Running 0 24s -
PV'nin oluşturulduğunu ve dizin kotasının etkin olduğunu doğrulayın.
-
PV'yi kontrol edin.
kubectl get pvBeklenen çıktı (PV'nin kapasitesi 20 GiB'dir):
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS VOLUMEATTRIBUTESCLASS REASON AGE nas-****-c72c-497f-ab13-****** 20Gi RWX Delete Bound default/nas-pvc-nas-sts-0 alicloud-nas-quota-sc <unset> 15m NAS konsolunda dizin kotasını onaylayın. NAS konsolu nda File System List sayfasına gidin. Hedef dosya sisteminin Actions sütununda  > Quota Management öğesini tıklayın. Ayrıntıları görüntülemek için Manage Quotas öğesini tıklayın. Dizin kotası 20 GiB olarak ayarlanır.

-
Dizin kotası sınırını doğrulama
Birimin 20 GiB kotası olduğu için, bağlı dizine 20 GiB üzerindeki yazma işlemleri Disk quota exceeded hatasına neden olur.
-
Bağlı
/datadizinine 20.000 MiB (yaklaşık 19,53 GiB) veri yazın.kubectl exec -it nas-sts-0 -- dd if=/dev/zero of=/data/20G.txt bs=1M count=20000 -
5 ila 15 dakika bekleyin, ardından NAS konsolunda dizin kotasını kontrol edin. NAS konsolu nda File System List sayfasına gidin. Hedef dosya sisteminin Actions sütununda  > Quota Management öğesini tıklayın. Mevcut kullanımı görüntülemek için Manage Quotas öğesini tıklayın. Dizinde artık yaklaşık 19 GiB kullanılan alan gösterilir.

-
Kota aşmak için 1 GiB daha yazmayı deneyin.
kubectl exec -it nas-sts-0 -- dd if=/dev/zero of=/data/1G.txt bs=1M count=1024Aşağıdaki hata, kotanın uygulandığını doğrular:
dd: closing output file '/data/1G.txt': Disk quota exceeded
Dizin kotalı dinamik olarak sağlanan bir NAS birimini genişletme
Birim kapasitesini, PVC depolama değerini yamalayarak genişletin. Bu işlem çalışan hizmetleri kesintiye uğratmaz.
NAS dizininin kotası GiB cinsinden ölçülür. PVC'yi değiştirdikten sonra, CSI eklentisi bağlı NAS dizininin kotasını PVC tarafından belirtilen yeni birim kapasitesine göre ayarlar. Ayarlama sırasında, CSI eklentisi kapasite değerini en yakın tam sayıya yukarı yuvarlar.
-
Mevcut PVC boyutunu kontrol edin.
kubectl get pvcBeklenen çıktı:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE nas-pvc-nas-sts-0 Bound nas-****-c72c-497f-ab13-****** 20Gi RWX alicloud-nas-quota-sc <unset> 23m -
PVC'yi 20 GiB'den 30 GiB'ye genişletin.
kubectl patch pvc nas-pvc-nas-sts-0 -p '{"spec":{"resources":{"requests":{"storage":"30Gi"}}}}' -
PV ve PVC'yi kontrol ederek genişletmeyi doğrulayın.
-
PV'yi kontrol edin.
kubectl get pvBeklenen çıktı (kapasite artık 30 GiB'dir):
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS VOLUMEATTRIBUTESCLASS REASON AGE nas-****-c72c-497f-ab13-****** 30Gi RWX Delete Bound default/nas-pvc-nas-sts-0 alicloud-nas-quota-sc <unset> 25m -
PVC'yi kontrol edin.
kubectl get pvcBeklenen çıktı:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE nas-pvc-nas-sts-0 Bound nas-****-c72c-497f-ab13-****** 30Gi RWX alicloud-nas-quota-sc <unset> 26m
-
-
NAS konsolunda güncellenen kotaları onaylayın. NAS konsolu nda File System List sayfasına gidin. Hedef dosya sisteminin Actions sütununda  > Quota Management öğesini tıklayın. Dizin kotasının artık 30 GiB olduğunu onaylamak için Manage Quotas öğesini tıklayın.

SSS
NAS birimlerini bağlarken veya kullanırken sorunlarla karşılaşırsanız, aşağıdaki kaynaklara bakın:
Sonraki adımlar
NAS dizin kotası ayrıntıları için bkz. Dizin kotaları.
NAS birimi kapasite kullanımını izlemek için
node_volume_capacity_bytes_usedölçümünü kullanın ve Prometheus örneği için uyarı kuralı oluşturma konusuna bakın.