All Products
Search
Document Center

:Secara otomatis memperluas kapasitas volume NAS menggunakan CNFS

Last Updated:Mar 27, 2026

Fitur auto-scaling Container Network File System (CNFS) memungkinkan Anda menetapkan kebijakan satu kali—komponen storage-operator akan memantau penggunaan volume NAS dan secara otomatis memperluas kapasitasnya saat penggunaan melebihi ambang batas. Tidak diperlukan perubahan kode, intervensi manual, atau pemantauan tingkat penyimpanan secara manual.

Cara kerja

Alur kerja auto-scaling sepenuhnya ditangani oleh komponen storage-operator.

image
  1. Tentukan kebijakan. Buat resource StorageAutoScalerPolicy yang menentukan PersistentVolumeClaim (PVC) target, kondisi pemicu, dan aksi skala keluar.

    StorageClass yang digunakan oleh PVC harus memiliki allowVolumeExpansion: true.
  2. Pantau secara terus-menerus. Komponen storage-operator memantau penggunaan penyimpanan real-time dari PVC target.

  3. Picu skala keluar. Saat kondisi terpenuhi, storage-operator mengirim permintaan skala keluar ke PVC.

  4. Jalankan skala keluar. Driver Container Storage Interface (CSI) memproses permintaan tersebut, dan Alibaba Cloud NAS melakukan ekspansi sistem file sesungguhnya.

  5. Sinkronkan status. Status PVC diperbarui secara otomatis untuk mencerminkan kapasitas baru.

Prasyarat

Sebelum memulai, pastikan Anda telah:

  • csi-plugin dan csi-provisioner versi v1.20.5-ff6490f-aliyun atau lebih baru. Untuk upgrade, lihat Upgrade CSI components.

  • storage-operator versi v1.18.8.56-2aa33ba-aliyun atau lebih baru. Untuk upgrade, lihat Manage the storage-operator component.

  • cnfs-controller telah diinstal. Ini adalah komponen managed yang diinstal secara default—pastikan komponen ini belum diuninstall.

  • CNFS dengan status Available. Untuk membuatnya, lihat Manage NAS file systems with CNFS.

Untuk versi storage-operator sebelum v1.33.1: Jalankan perintah berikut untuk mengaktifkan fitur auto-scaling dalam ConfigMap sebelum melanjutkan:

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\"}"}}'

Untuk memverifikasi status CNFS:

# Daftar semua objek CNFS
kubectl get cnfs

# Periksa status CNFS tertentu
kubectl get cnfs <CNFS_NAME> -o yaml | grep Available

Output yang diharapkan:

NAME                                      AGE
default-cnfs-nas-837d6ea-20210819155623   14d
status: Available

Langkah 1: Tentukan kebijakan skala keluar

Buat resource StorageAutoScalerPolicy untuk menentukan kapan dan bagaimana storage-operator memperluas volume NAS Anda.

Contoh berikut memicu skala keluar saat penggunaan kapasitas PVC dengan label app: nginx (di namespace default atau nginx) melebihi 80%. Setiap ekspansi menggandakan kapasitas saat ini, hingga maksimum 200 GiB.

cat << EOF | kubectl apply -f -
apiVersion: storage.alibabacloud.com/v1alpha1
kind: StorageAutoScalerPolicy
metadata:
  name: hybrid-expand-policy
spec:
  # Cocokkan PVC berdasarkan pemilih label.
  pvcSelector:
    matchLabels:
      app: nginx  # Harus sesuai dengan label pada PVC dan Deployment Anda.
  # Namespace tempat kebijakan ini berlaku.
  namespaces:
    - default
    - nginx
  # Kondisi yang memicu skala keluar.
  conditions:
    - name: condition1
      key: volume-capacity-used-percentage  # Metrik: persentase penggunaan kapasitas.
      operator: Gt                          # Lebih besar dari.
      values:
        - "80"                              # Ambang batas: 80%.
  # Aksi yang dilakukan saat kondisi terpenuhi.
  actions:
    - name: action1
      type: volume-expand
      params:
        scale: 100%    # Tingkatkan kapasitas sebesar 100% dari ukuran saat ini.
        limits: 200Gi  # Batasi kapasitas total maksimal 200 GiB.
EOF

Parameter kebijakan:

Parameter Deskripsi
pvcSelector Pemilih label yang mencocokkan PVC yang dikenai kebijakan ini.
namespaces Namespace tempat kebijakan aktif. Beberapa namespace menggunakan logika OR. Default-nya default jika tidak ditentukan.
conditions Satu atau beberapa kondisi pemicu. Beberapa kondisi menggunakan logika AND — semuanya harus terpenuhi agar kebijakan dijalankan.
actions Aksi yang dijalankan saat kondisi terpenuhi. Sistem menjalankan aksi pertama yang cocok.

Parameter conditions:

Parameter Nilai Deskripsi
key volume-capacity-used-percentage Memicu saat kapasitas terpakai melebihi ambang batas.
volume-capacity-free-size Memicu saat ruang kosong turun di bawah ambang batas.
volume-capacity-pvc-size Memicu saat kapasitas awal yang diminta (pvc.spec.resources.requests.storage) turun di bawah ambang batas.
operator Gt, Lt, Eq, Ne Operator perbandingan. Tidak peka huruf besar/kecil.
values String numerik Nilai ambang batas untuk kondisi tersebut.

Parameter actions:

Parameter Deskripsi
type Jenis aksi. Saat ini hanya volume-expand yang didukung.
scale Ukuran langkah ekspansi. Gunakan persentase (misalnya, 50%) atau nilai statis (misalnya, 100Gi).
limits Kapasitas total maksimum setelah ekspansi. Tetapkan nilai ini untuk mengontrol biaya dan mencegah pertumbuhan tak terkendali.

Langkah 2: Buat StorageClass

Buat StorageClass yang mereferensikan sistem file NAS CNFS yang sudah ada. Tetapkan allowVolumeExpansion: true—hal ini menetapkan garis dasar kapasitas yang digunakan oleh kebijakan auto-scaling untuk menghitung penggunaan.

cat << EOF | kubectl apply -f -
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: alibabacloud-cnfs-nas  # Direferensikan oleh PVC pada langkah berikutnya.
mountOptions:
- nolock,tcp,noresvport
- vers=3
parameters:
  volumeAs: subpath
  # Format: <nas-server-address>:/<path>
  server: "0cd8b4a576-g****.cn-hangzhou.nas.aliyuncs.com:/k8s"
  archiveOnDelete: "true"
provisioner: nasplugin.csi.alibabacloud.com
reclaimPolicy: Retain
allowVolumeExpansion: true  # Diperlukan untuk auto-scaling.
EOF

Untuk daftar lengkap parameter StorageClass, lihat Manage NAS file systems with CNFS.

Langkah 3: Terapkan aplikasi dan PVC

Buat PVC dan Deployment dengan label yang sesuai dengan pvcSelector.matchLabels dalam kebijakan Anda (app: nginx). Komponen storage-operator menggunakan label ini untuk mengaitkan kebijakan dengan PVC yang tepat.

cat << EOF | kubectl apply -f -
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: cnfs-nas-pvc
  labels:
    app: nginx  # Harus sesuai dengan pvcSelector.matchLabels dalam kebijakan.
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: alibabacloud-cnfs-nas  # Mereferensikan StorageClass yang dibuat sebelumnya.
  resources:
    requests:
      storage: 20Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: cnfs-nas-deployment
  labels:
    app: nginx
spec:
  selector:
    matchLabels:
      app: nginx  # Harus sesuai dengan pvcSelector.matchLabels dalam kebijakan.
  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:
        - mountPath: "/data"
          name: cnfs-nas-pvc
      volumes:
      - name: cnfs-nas-pvc
        persistentVolumeClaim:
          claimName: cnfs-nas-pvc
EOF

Langkah 4: Verifikasi auto-scaling

Picu skala keluar dengan menulis data uji, lalu konfirmasi ekspansi melalui event dan dasbor pemantauan.

  1. Konfirmasi Pod sedang berjalan.

    kubectl get pods -l app=nginx

    Output yang diharapkan:

    NAME                                       READY   STATUS    RESTARTS   AGE
    cnfs-nas-deployment-56dbcc7fb7-wh79z       1/1     Running   0          20m
  2. Catat kapasitas PVC awal sebelum menulis data apa pun.

    kubectl get pvc cnfs-nas-pvc

    Output yang diharapkan (status awal, 20 GiB):

    NAME           STATUS   VOLUME       CAPACITY   ACCESS MODES   STORAGECLASS             AGE
    cnfs-nas-pvc   Bound    ...          20Gi       RWX            alibabacloud-cnfs-nas    2m
  3. Tulis data uji sebesar 20 GiB untuk mendorong penggunaan melebihi ambang batas 80%.

    Operasi penulisan mungkin memakan waktu beberapa menit tergantung throughput jaringan dan performa penyimpanan.
    kubectl exec -it <POD_NAME> -- dd if=/dev/zero of=/data/testfile bs=1G count=20
  4. Periksa event yang dihasilkan oleh skala keluar.

    kubectl get events | grep cnfs-nas-pvc

    Event StartExpand dan VolumeResizeSuccessful mengonfirmasi bahwa ekspansi telah selesai. Pada contoh ini, PVC diskalakan dari 20 GiB menjadi 40 GiB (kenaikan 100%).

    12s   Warning  StartExpand            persistentvolumeclaim/cnfs-nas-pvc   Start to expand of pvc cnfs-nas-pvc from 20Gi to 40Gi, usedCapacityPercentage:99%, freeSize:204MB.
    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

    Konfirmasi kapasitas yang diperbarui:

    kubectl get pvc cnfs-nas-pvc
  5. (Opsional) Lihat tren penggunaan pada dasbor pemantauan CSI NAS. Pada contoh ini, skala keluar dipicu pada pukul 10:23:30, dan kapasitas setelah ekspansi adalah 100 GiB.

    Memerlukan Alibaba Cloud Prometheus Monitoring.
    1. Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, pilih Operations > Prometheus Monitoring.

    2. Klik tab Storage Monitoring, lalu klik CSI NAS.

    3. Tetapkan Namespace ke default dan PVC Name ke cnfs-nas-pvc untuk melihat kapasitas di area Total Capacity.

    NAS存储卷容量

Praktik terbaik

Terapkan rekomendasi berikut saat menggunakan auto-scaling volume NAS di lingkungan produksi.

Dimensi Panduan
Kontrol biaya Tetapkan limits dalam kebijakan skala keluar Anda untuk membatasi kapasitas total. Untuk volume yang sangat besar, gunakan nilai scale statis (misalnya, 200Gi) alih-alih persentase agar kontrol biaya lebih dapat diprediksi.
Penyetelan ambang batas Tetapkan ambang batas pemicu antara 75% hingga 80%. Ambang batas pada atau di atas 95% tidak memberikan waktu cukup bagi proses ekspansi untuk selesai sebelum volume kehabisan ruang.
Pemantauan Aktifkan container storage monitoring dan konfigurasikan Alibaba Cloud Prometheus Monitoring untuk memberikan peringatan berdasarkan metrik penyimpanan.
Kebijakan granular Buat objek StorageAutoScalerPolicy terpisah untuk setiap aplikasi atau lingkungan agar kapasitas dapat dikelola secara independen.
Performa Auto-scaling mengatasi kendala kapasitas, bukan bottleneck performa. Jika aplikasi Anda lambat karena batasan IOPS atau banyak operasi file kecil, pilih tier NAS dengan performa lebih tinggi.