All Products
Search
Document Center

Container Service for Kubernetes:Konfigurasikan ekspansi disk otomatis

Last Updated:Mar 07, 2026

ACK mendukung ekspansi otomatis volume disk cloud. Definisikan kebijakan ekspansi otomatis menggunakan CRD untuk memperluas volume secara otomatis ketika penggunaannya melebihi ambang batas yang ditentukan. Topik ini menjelaskan cara mengonfigurasi kebijakan ekspansi disk cloud otomatis dan memverifikasi bahwa volume diperluas secara otomatis.

Penerapan

Dalam topik ini, CRD digunakan untuk membuat kebijakan ekspansi otomatis (StorageAutoScalerPolicy) guna memperluas volume disk secara otomatis. Bagian berikut menjelaskan skenario di mana Anda dapat menggunakan metode ini:

  • PVC yang terikat pada volume persisten (PV) disk dikaitkan dengan StorageClass, dan parameter allowVolumeExpansion: true ditentukan dalam StorageClass tersebut.

    Catatan

    Secara default, parameter allowVolumeExpansion: true telah ditentukan dalam StorageClass yang disediakan oleh ACK. Anda harus menentukan parameter ini untuk StorageClass yang Anda buat sendiri. Properti StorageClass tidak dapat diubah setelah dibuat—Anda hanya dapat membuat StorageClass baru.

  • Pod aplikasi tempat disk disambungkan harus berada dalam status Running.

  • Jika disk tersebut merupakan disk dasar, Anda tidak dapat memperluas volume disk dengan metode ini.

  • Jika versi Kubernetes kluster lebih lama dari 1.16, Anda tidak dapat menggunakan metode ini untuk memperluas volume disk. Untuk informasi selengkapnya tentang cara meningkatkan versi Kubernetes kluster, lihat Upgrade clusters.

  • Anda hanya dapat memperluas volume disk yang mendukung resize. Untuk informasi selengkapnya, lihat ResizeDisk.

Catatan penting

Interval maksimum antar pemicu ekspansi adalah 2 menit, dan proses ekspansi disk membutuhkan waktu sekitar 1 menit. Jangan mengisi penuh disk dalam rentang waktu 3 menit.

Persiapan

Sebelum memulai, periksa status storage-operator dan aktifkan ekspansi otomatis sesuai kebutuhan berdasarkan versi Anda.

  1. Pastikan komponen tersebut telah diinstal.

    storage-operator diinstal secara default di kluster Anda. Di Konsol manajemen kluster, buka Operations > Add-ons dan periksa status instalasi serta versinya di tab Volumes. Untuk melakukan upgrade, lihat Upgrade add-ons.
  2. Aktifkan ekspansi otomatis berdasarkan versi Anda.

    Modul storage-auto-expander dalam storage-operator menangani ekspansi otomatis sumber daya penyimpanan.

    • v1.33.1 dan yang lebih baru: Diaktifkan secara default. Tidak diperlukan tindakan tambahan.

    • Lebih lama dari v1.33.1: Aktifkan secara manual dengan memperbarui ConfigMap storage-operator.

      Jalankan perintah berikut:

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

Langkah 1: Konfigurasikan kebijakan ekspansi disk cloud otomatis

  1. Periksa StorageClass Anda untuk memastikan ekspansi volume diaktifkan.

    kubectl get sc
    Catatan

    Kami merekomendasikan penggunaan StorageClass default bernama alicloud-disk-topology-alltype di kluster ACK Anda. StorageClass ini secara otomatis memilih tipe disk yang sesuai berdasarkan tipe instans dan ketersediaan zona Anda, sehingga membantu menghindari kegagalan akibat keterbatasan instans atau stok disk yang tidak mencukupi. Untuk detail tentang pembuatan StorageClass, lihat Use dynamically provisioned volumes.

    Output yang diharapkan ditampilkan di bawah ini. Nilai true untuk ALLOWVOLUMEEXPANSION menunjukkan bahwa ekspansi telah diaktifkan.

    NAME                                    PROVISIONER                       RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
    alicloud-disk-efficiency                diskplugin.csi.alibabacloud.com   Delete          Immediate              true                   26h
    alicloud-disk-essd                      diskplugin.csi.alibabacloud.com   Delete          Immediate              true                   26h
    alicloud-disk-ssd                       diskplugin.csi.alibabacloud.com   Delete          Immediate              true                   26h
    alicloud-disk-topology-alltype          diskplugin.csi.alibabacloud.com   Delete          WaitForFirstConsumer   true                   26h
  2. Buat kebijakan ekspansi otomatis menggunakan CRD.

    1. Buat file bernama StorageAutoScalerPolicy.yaml dengan konten YAML berikut.

      apiVersion: storage.alibabacloud.com/v1alpha1
      kind: StorageAutoScalerPolicy
      metadata:
        name: hybrid-expand-policy
      spec:
        pvcSelector:
          matchLabels:
            app: nginx
        namespaces:
          - default
          - nginx
        conditions:
          - name: condition1
            key: volume-capacity-used-percentage
            operator: Gt
            values:
              - "80"
        actions:
          - name: action1
            type: volume-expand
            params:
              scale: 50Gi
              limits: 100Gi
          - name: action2
            type: volume-expand
            params:
              scale: 50%
              limits: 300Gi

      Sesuaikan konfigurasi berdasarkan aplikasi dan pengaturan PVC Anda. Tabel berikut menjelaskan parameter-parameter tersebut:

      Parameter

      Deskripsi

      pvcSelector

      Memilih PVC target berdasarkan label. Contoh ini menggunakan app: nginx.

      namespaces

      Namespace tempat PVC target berada. Beberapa namespace menggunakan logika OR. Jika tidak ditentukan, nilai default-nya adalah default.

      conditions

      Kondisi yang memicu aturan. Beberapa kondisi menggunakan logika AND. Setiap kondisi mencakup:

      • name: Nama kustom untuk kondisi tersebut.

      • key: Jenis metrik. volume-capacity-used-percentage merepresentasikan persentase penggunaan kapasitas.

      • operator: Operator perbandingan. Nilai yang didukung meliputi Gt (lebih besar dari), Lt (lebih kecil dari), Eq (sama dengan), dan Ne (tidak sama dengan). Tidak peka huruf besar/kecil.

      • values: Nilai numerik spesifik untuk aturan tersebut.

      Contoh ini memicu aksi ketika penggunaan PVC melebihi 80%.

      actions

      Aksi yang dilakukan ketika kondisi terpenuhi. Beberapa aksi diperbolehkan. Setiap aksi mencakup:

      • name: Nama kustom untuk aksi tersebut.

      • type: Jenis aksi. Saat ini hanya volume-expand yang didukung.

      • params: Parameter aksi. scale menentukan jumlah ekspansi dalam GiB atau sebagai persentase. limits menetapkan ukuran maksimum untuk PVC dalam aksi ini.

      Jika terdapat beberapa aksi, sistem akan mengeksekusi aksi pertama yang cocok dan melewati sisanya.

      Dalam contoh ini, jika action1 cocok, maka dijalankan dan action2 dilewati. Jika action1 tidak cocok, action2 dijalankan.

      • Action1 memperluas disk sebesar 50 GiB (maksimal total 100 GiB) ketika ukuran saat ini kurang dari 100 GiB.

      • Action2 menambah disk sebesar 50% dari ukuran saat ini (menjadi 150% dari ukuran awal) ketika ukuran saat ini berada di antara 100 GiB dan 300 GiB, dengan batas maksimum 300 GiB.

    2. Buat kebijakan ekspansi otomatis.

      kubectl create -f StorageAutoScalerPolicy.yaml

Langkah 2: Verifikasi ekspansi disk cloud otomatis

  1. Buat StatefulSet untuk menguji ekspansi otomatis.

    1. Buat file bernama StatefulSet.yaml dengan konten berikut.

      YAML ini membuat StatefulSet dengan satu pod yang memasang disk cloud 25 GiB di /data.

      apiVersion: apps/v1
      kind: StatefulSet
      metadata:
        name: nginx
      spec:
        selector:
          matchLabels:
            app: nginx
        serviceName: 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
              ports:
              - containerPort: 80
              volumeMounts:
              - name: pvc-disk
                mountPath: /data
            volumes:
              - name: pvc-disk
                persistentVolumeClaim:
                  claimName: disk-pvc
        volumeClaimTemplates:
          - metadata:
              name: pvc-disk
              labels:
                app: nginx
            spec:
              accessModes: [ "ReadWriteOnce" ]
              storageClassName: "alicloud-disk-topology-alltype"
              resources:
                requests:
                  storage: 25Gi    
    2. Buat StatefulSet tersebut.

      kubectl create -f StatefulSet.yaml
    3. Periksa status deployment pod.

      kubectl get pod -l app=nginx

      Output yang diharapkan:

      NAME      READY   STATUS    RESTARTS   AGE
      nginx-0   1/1     Running   0          99s
    4. Periksa kapasitas disk.

      kubectl exec -it nginx-0 -- df -h /data

      Output yang diharapkan:

      Filesystem      Size  Used Avail Use% Mounted on
      /dev/vdb         25G   24K   25G   1% /data
  2. Tulis data ke path mount hingga penggunaan melebihi 80% untuk memicu ekspansi pertama.

    1. Tulis data ke path mount.

      Perintah berikut mengalokasikan 22 GB ke /data/test1, mendorong penggunaan melebihi 80%.

      kubectl exec -it nginx-0 -- fallocate -l 22G /data/test1
    2. Periksa event ekspansi.

      kubectl get events

      Karena penggunaan disk cloud lebih dari 80% dan kapasitas disk adalah 25 GiB, action1 dieksekusi secara otomatis untuk memperluas disk sebesar 50 GiB. Anda dapat melihat event terkait dalam daftar event.

      2m1s   Warning   StartExpand                  persistentvolumeclaim/pvc-disk-nginx-0    Start to expand of pvc pvc-disk-nginx-0 from 25Gi to 75Gi, usedCapacityPercentage:90%, freeSize:2498MB.
      2m1s   Normal    ExternalExpanding            persistentvolumeclaim/pvc-disk-nginx-0    waiting for an external controller to expand this PVC
      2m1s   Normal    Resizing                     persistentvolumeclaim/pvc-disk-nginx-0    External resizer is resizing volume d-uf66kkzltnq6xgi9****
      118s   Normal    FileSystemResizeRequired     persistentvolumeclaim/pvc-disk-nginx-0    Require file system resize of volume on node
      116s   Warning   SkipExpand                   persistentvolumeclaim/pvc-disk-nginx-0    Pvc pvc-disk-nginx-0 is expanding status from 25Gi to 75Gi, this action action2 will skip.
    3. Periksa kapasitas PVC.

      kubectl get pvc

      Output yang diharapkan menunjukkan disk diperluas dari 25 GiB menjadi 75 GiB:

      NAME               STATUS   VOLUME                   CAPACITY   ACCESS MODES   STORAGECLASS                     VOLUMEATTRIBUTESCLASS   AGE
      pvc-disk-nginx-0   Bound    d-uf66kkzltnq6xgi9****   75Gi       RWO            alicloud-disk-topology-alltype   <unset>                 26m
  3. Tulis lebih banyak data hingga penggunaan melebihi 80% lagi untuk memicu ekspansi kedua.

    1. Tulis data ke path mount.

      Perintah berikut mengalokasikan 40 GB data ke /data/test2, menyebabkan penggunaan disk cloud melebihi 80%.

      kubectl exec -it nginx-0 -- fallocate -l 40G /data/test2
    2. Periksa event ekspansi.

      kubectl get events

      Ketika penggunaan disk cloud 75 GiB melebihi 80%, action1 dieksekusi secara otomatis untuk melakukan scale-out sebesar 50 GiB. Namun, action1 memiliki batas kapasitas 100 GiB, sehingga disk cloud diperluas dari 75 GiB menjadi 100 GiB. Anda dapat melihat event terkait dalam daftar event.

      7m4s   Warning   StartExpand                  persistentvolumeclaim/pvc-disk-nginx-0      Start to expand of pvc pvc-disk-nginx-0 from 75Gi to 100Gi, usedCapacityPercentage:84%, freeSize:11927MB.
      7m4s   Normal    ExternalExpanding            persistentvolumeclaim/pvc-disk-nginx-0      waiting for an external controller to expand this PVC
      7m4s   Normal    Resizing                     persistentvolumeclaim/pvc-disk-nginx-0      External resizer is resizing volume d-uf66kkzltnq6xgi9****
      7m1s   Normal    FileSystemResizeRequired     persistentvolumeclaim/pvc-disk-nginx-0      Require file system resize of volume on node
      5m59s  Warning   SkipExpand                   persistentvolumeclaim/pvc-disk-nginx-0      Pvc pvc-disk-nginx-0 is expanding status from 75Gi to 100Gi, this action action2 will skip.
  4. Tulis lebih banyak data hingga penggunaan melebihi 80% lagi untuk memicu ekspansi ketiga.

    1. Tulis data ke path mount.

      Contoh perintah berikut mengalokasikan 20 GB data ke /data/test3, mengakibatkan penggunaan disk cloud melebihi 80%.

      kubectl exec -it nginx-0 -- fallocate -l 20G /data/test3
    2. Periksa event ekspansi.

      kubectl get events

      Ketika penggunaan kapasitas disk cloud 100 GiB melebihi 80%, action2 dieksekusi secara otomatis untuk memperluas disk dari 100 GiB menjadi 150 GiB. Anda dapat melihat event terkait dalam daftar event.

      2m40s   Warning   StartExpand                  persistentvolumeclaim/pvc-disk-nginx-0    Start to expand of pvc pvc-disk-nginx-0 from 100Gi to 150Gi, usedCapacityPercentage:83%, freeSize:16637MB.
      2m40s   Normal    ExternalExpanding            persistentvolumeclaim/pvc-disk-nginx-0    waiting for an external controller to expand this PVC
      2m40s   Normal    Resizing                     persistentvolumeclaim/pvc-disk-nginx-0    External resizer is resizing volume d-uf66kkzltnq6xgi9****
      2m37s   Normal    FileSystemResizeRequired     persistentvolumeclaim/pvc-disk-nginx-0    Require file system resize of volume on node
      109s    Warning   SkipExpand                   persistentvolumeclaim/pvc-disk-nginx-0    Pvc pvc-disk-nginx-0 is expanding status from 100Gi to 150Gi, this action action2 will skip.
  5. Tulis lebih banyak data hingga penggunaan melebihi 80% lagi untuk memicu ekspansi keempat.

    1. Tulis data ke path mount.

      Perintah berikut mengalokasikan 50 GB data ke /data/test4, yang menyebabkan penggunaan kapasitas disk cloud melebihi 80%.

      kubectl exec -it nginx-0 -- fallocate -l 50G /data/test4
    2. Periksa event ekspansi.

      kubectl get events

      Pada kapasitas 150 GiB dan penggunaan di atas 80%, action2 dipicu lagi, memperluas disk sebesar 50% (dari 150 GiB menjadi 225 GiB). Event menunjukkan:

      2m42s   Warning   StartExpand                  persistentvolumeclaim/pvc-disk-nginx-0    Start to expand of pvc pvc-disk-nginx-0 from 150Gi to 225Gi, usedCapacityPercentage:87%, freeSize:19621MB.
      2m42s   Normal    ExternalExpanding            persistentvolumeclaim/pvc-disk-nginx-0    waiting for an external controller to expand this PVC
      2m42s   Normal    Resizing                     persistentvolumeclaim/pvc-disk-nginx-0    External resizer is resizing volume d-uf66kkzltnq6xgi9****
      2m38s   Normal    FileSystemResizeRequired     persistentvolumeclaim/pvc-disk-nginx-0    Require file system resize of volume on node
      114s    Warning   SkipExpand                   persistentvolumeclaim/pvc-disk-nginx-0    Pvc pvc-disk-nginx-0 is expanding status from 150Gi to 225Gi, this action action2 will skip.
  6. Tulis lebih banyak data hingga penggunaan melebihi 80% lagi untuk memicu ekspansi kelima.

    1. Tulis data ke path mount.

      Perintah berikut mengalokasikan 50 GB data ke /data/test5, mengakibatkan penggunaan kapasitas disk cloud melebihi 80%.

      kubectl exec -it nginx-0 -- fallocate -l 50G /data/test5
    2. Periksa event ekspansi.

      kubectl get events

      Pada kapasitas 225 GiB dan penggunaan di atas 80%, action2 dipicu lagi. Karena batasnya adalah 300 GiB, disk diperluas dari 225 GiB menjadi 300 GiB. Event menunjukkan:

      17m     Warning   StartExpand                  persistentvolumeclaim/pvc-disk-nginx-0    Start to expand of pvc pvc-disk-nginx-0 from 225Gi to 300Gi, usedCapacityPercentage:82%, freeSize:40351MB.
      17m     Normal    ExternalExpanding            persistentvolumeclaim/pvc-disk-nginx-0    waiting for an external controller to expand this PVC
      17m     Normal    Resizing                     persistentvolumeclaim/pvc-disk-nginx-0    External resizer is resizing volume d-uf66kkzltnq6xgi9****
      17m     Normal    FileSystemResizeRequired     persistentvolumeclaim/pvc-disk-nginx-0    Require file system resize of volume on node

      Pada titik ini, baik action1 maupun action2 telah dieksekusi. Jika kapasitas disk kembali melebihi 80%, kondisi pemicu kedua aksi tersebut tidak lagi terpenuhi, sehingga scale-out tidak dipicu.

Referensi

Jika Anda mengalami masalah saat menggunakan volume disk cloud, lihat Cloud disk volume FAQ.