Tüm Ürünler
Search
Belge Merkezi

:Use CNFS to automatically expand NAS volumes

Son Güncelleme:Oct 09, 2026

Container Network File System (CNFS) tarafından yönetilen File Storage NAS (NAS) birimleri için otomatik genişletme ilkeleri tanımlayabilirsiniz. Bu ilkeler, depolama kullanımı eşik değerini aştığında NAS birimlerini otomatik olarak genişletir. Bu konuda, CNFS kullanarak NAS birimlerinin nasıl otomatik olarak genişletileceği açıklanmaktadır.

Önkoşullar

  • Kümeniz, CNFS kullanarak NAS dosya sistemlerini yönetebilmelidir. Daha fazla bilgi için bkz. CNFS kullanarak NAS dosya sistemlerini yönetin.

  • Küme CSI eklentisini kullanır ve depolama ile ilgili bileşenler aşağıdaki gereksinimleri karşılamalıdır:

    • csi-plugin ve csi-provisioner sürümleri 1.20.5-ff6490f-aliyun veya daha yeni olmalıdır. csi-plugin ve csi-provisioner güncelleme hakkında daha fazla bilgi için bkz. CSI bileşenlerini yükseltin.

    • csi-plugin için varsayılan dnsPolicy değeri ClusterFirst değeridir. CNFS kullanarak NAS birimlerini otomatik olarak genişletmek istiyorsanız, varsayılan dnsPolicy değerini ClusterFirst değerinden ClusterFirstWithHostNet değerine değiştirmeniz gerekir.

    • storage-operator sürümü 1.18.8.56-2aa33ba-aliyun veya daha yeni olmalıdır. Daha fazla bilgi için bkz. storage-operator.

Adım 1: storage-operator bileşenini yapılandırın ve otomatik genişletmeyi etkinleştirin

storage-operator bileşenindeki varsayılan storage-auto-expander, depolama kaynaklarını otomatik olarak genişletmekten sorumludur. Kümeninize bağlanın ve otomatik genişletme özelliğini etkinleştirmek için storage-operator ConfigMap dosyasını değiştirmek üzere aşağıdaki komutu çalıştırın:

kubectl patch configmap/storage-operator \
  -n kube-system \
  --type merge \
  -p '{"data":{"storage-auto-expander":"{\"imageRep\":\"acs/storage-auto-expander\",\"imageTag\":\"\",\"install\":\"true\",\"template\":\"/acs/templates/storage-auto-expander/install.yaml\",\"type\":\"deployment\"}"}}'

Adım 2: Otomatik genişletme ilkesi yapılandırın

  1. CNFS nesnesinin durumunu görüntüleyin. CNFS nesnesinin Available durumunda olduğundan emin olun.

    1. CNFS nesnesini sorgulayın.

      kubectl get cnfs

      Beklenen çıktı:

      NAME                                      AGE
      default-cnfs-nas-837d6ea-20210819155623   14d
    2. CNFS nesnesinin durumunu görüntüleyin.

      kubectl get cnfs <The CNFS object queried in the previous step> -o yaml | grep Available

      Beklenen çıktı:

      status: Available
  2. Bir NAS birimi için otomatik genişletme ilkesi oluşturmak üzere aşağıdaki YAML şablonunu kullanın.

    cat << EOF | kubectl apply -f -
    apiVersion: storage.alibabacloud.com/v1alpha1
    kind: StorageAutoScalerPolicy
    metadata:
      name: hybrid-expand-policy
    spec:
      pvcSelector:
        matchLabels:
          app: nginx      # You must specify the label that is added to the persistent volume claim (PVC) and the Deployment to which the NAS volume is mounted. In this example, app: nginx is specified. 
      namespaces:
        - default
        - nginx
      conditions:
        - name: condition1
          key: volume-capacity-used-percentage
          operator: Gt
          values:
            - "80"
      actions:
        - name: action1
          type: volume-expand
          params:
            scale: 100%
            limits: 500Gi
    EOF

    Parametre

    Açıklama

    pvcSelector

    Genişletme ilkesini, NAS birimini bağlamak için kullanılan PVC ile eşleştirmek amacıyla kullanılan etikettir. Bu örnekte nginx kullanılmıştır.

    namespaces

    NAS birimini bağlamak için kullanılan PVC'nin ad alanıdır. Birden çok ad alanı belirtilirse, ad alanları arasındaki mantıksal işlemci VEYA'dır. Varsayılan değer: default. Bu örnekte default ve nginx belirtilmiştir.

    conditions

    Eylemi tetikleyen koşullardır. Birden çok conditions arasındaki mantıksal işlemci VE'dir. Her bir condition aşağıdaki parametreleri içerir:

    • key: ölçüm türü.

    • volume-capacity-used-percentage: depolama kullanımı eşiğinin yüzde cinsinden ifade edildiğini belirtir.

    • operator: işlemci. Değerler Gt (büyüktür), Lt (küçüktür), Eq (eşittir) veya Ne (eşit değildir) olabilir. Parametre değeri büyük/küçük harfe duyarlı değildir.

    • values: eşik değeri.

    Örnekteki koşul, PVC'nin depolama kullanımı %80'i aştığında action öğesinin tetikleneceğini belirtir.

    actions

    Önceki conditions karşılandığında gerçekleştirilen eylemlerdir. Birden çok eyleme izin verilir. Her eylem aşağıdaki parametreleri içerir:

    • type: eylem türü. Yalnızca volume-expand desteklenir.

    • scale: birime eklemek istediğiniz depolama boyutu. Geçerli birimler: GiB ve yüzde (%).

    • limits: action gerçekleştirildiğinde PVC'nin maksimum kapasitesi.

    actions bölümünde birden çok actions belirtilmişse, koşulları karşılayan ilk action gerçekleştirilir. Diğer actions atlanır.

    Bu örnekte action1, koşullar karşılandığında NAS biriminin %100 oranında genişletileceğini belirtir. NAS birimi en fazla 500 GiB'a kadar genişletilebilir.

  3. Bir PVC ve Dağıtım oluşturmak için aşağıdaki YAML şablonunu kullanın.

    Önemli

    Otomatik genişletme ilkesi, belirtilen etikete sahip PVC ve Dağıtım'a uygulanır. Bu örnekte, otomatik genişletme ilkesinde pvcSelector.matchLabels değeri app: nginx olarak ayarlanmıştır. Bu durumda, ilke labels parametresi app: nginx olarak ayarlanmış olan PVC ve Dağıtım'a uygulanır.

    cat << EOF | kubectl apply -f -
    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: cnfs-nas-pvc
      labels:
        app: nginx   # You must specify the same value as the pvcSelector.matchLabels parameter in the YAML template of the expansion policy. In this example, app: nginx is specified. 
    spec:
      accessModes:
        - ReadWriteMany
      storageClassName: alibabacloud-cnfs-nas
      resources:
        requests:
          storage: 50Gi
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: cnfs-nas-deployment
      labels:
        app: nginx
    spec:
      selector:
        matchLabels:
          app: nginx   # You must specify the same value as the pvcSelector.matchLabels parameter in the YAML template of the expansion policy. In this example, app: nginx is specified. 
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:1.14.2
            volumeMounts:
            - mountPath: "/data"
              name: cnfs-nas-pvc
          volumes:
          - name: cnfs-nas-pvc
            persistentVolumeClaim:
              claimName: cnfs-nas-pvc
    EOF

Adım 3: NAS biriminin otomatik olarak genişletilebildiğini doğrulayın

  1. default ad alanındaki tüm pod'ları sorgulayın.

    kubectl get pod

    Beklenen çıktı:

    NAME                                                            READY   STATUS    RESTARTS   AGE
    cnfs-nas-deployment-56dbcc7fb7-wh79z   1/1      Running            0          20m
  2. Uygulama pod'una giriş yapın ve NAS biriminin bağlandığı dizine 50 GiB veri yazın.

    cd /data
    dd if=<data path> of=<mounted path>
    kubectl exec -it cnfs-nas-deployment-56dbcc7fb7-wh79z -ti -- dd if=/dev/zero of=/data/test1 bs=1G count=50
  3. Birim genişletme ile ilgili olayları kontrol edin.

    kubectl get events

    Aşağıdaki çıktı, NAS biriminin depolama kullanımının %80'i aştığını ve bunun sonucunda bir birim genişletmenin tetiklendiğini gösterir. NAS birimi 50 GiB'tan 100 GiB'a genişletilmiştir.

    12s         Warning   StartExpand                  persistentvolumeclaim/cnfs-nas-pvc          Start to expand of pvc cnfs-nas-pvc from 50Gi to 100Gi, usedCapacityPercentage:96%, freeSize:2048MB.
    12s         Normal    ExternalExpanding            persistentvolumeclaim/cnfs-nas-pvc          waiting for an external controller to expand this PVC
    12s         Normal    Resizing                     persistentvolumeclaim/cnfs-nas-pvc          External resizer is resizing volume nas-462db2b2-717d-44fe-b0b6-fb4db03a****
    12s         Normal    VolumeResizeSuccessful       persistentvolumeclaim/cnfs-nas-pvc          Resize volume succeeded
  4. CSI NAS panosundaki birim kullanım bilgilerini kontrol edin.

    1. ACK konsolu adresine giriş yapın. Sol gezinme bölmesinde Clusters seçeneğine tıklayın.

    2. Clusters sayfasında kümenizin adına tıklayın. Sol gezinme bölmesinde Operations > Prometheus Monitoring seçeneğine tıklayın.

    3. Prometheus Monitoring sayfasında Storage Monitoring > CSI NAS seçeneklerini belirleyin.

    4. CSI NAS sekmesinde NAS depolama biriminin bulunduğu ad alanını ve PVC'yi seçin. Ardından toplam kapasite bölümünde NAS biriminin kapasitesini görüntüleyebilirsiniz.

      Bu örnekte Namespace değerini default ve PVC değerini cnfs-nas-pvc olarak ayarlayın. NAS存储卷容量

      Yukarıdaki grafikte genişletmenin 10:23:30'da gerçekleştiği ve NAS biriminin 100 GiB'a genişletildiği görülmektedir.