All Products
Search
Document Center

Container Service for Kubernetes:Gunakan FlexVolume untuk memperluas volume disk secara dinamis di ACK

Last Updated:Mar 26, 2026

Saat beban kerja meningkat, volume disk yang dipasang ke Pod dapat kehabisan ruang. Container Service for Kubernetes (ACK) mendukung perluasan volume disk online menggunakan FlexVolume di Kubernetes 1.16 dan versi lebih baru—dalam sebagian besar kasus, tidak diperlukan restart Pod. Topik ini mencakup dua skenario perluasan: memperluas saat Pod tetap dalam status Running dan memperluas setelah merestart Pod.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

  • File kubeconfig untuk kluster Anda dan kubectl yang telah dikonfigurasi untuk terhubung ke kluster tersebut. Lihat Hubungkan ke kluster ACK menggunakan kubectl.

  • Volume persisten (PV) yang disediakan secara dinamis dan dipasang melalui Persistent Volume Claim (PVC) yang mencakup parameter storageClassName.

  • Plugin FlexVolume versi v1.14.8.109-5f88ade-aliyun atau lebih baru. Periksa halaman komponen kluster di Konsol ACK untuk melakukan upgrade.

Batasan

Sebelum memperluas volume disk, tinjau batasan berikut:

BatasanDetail
Hanya PV yang disediakan secara dinamisHanya PV yang disediakan secara dinamis dengan StorageClass yang dapat diperluas secara online. Volume inline dan volume yang didukung oleh basic disk tidak dapat diperluas tanpa gangguan layanan.
Ukuran disk maksimumDisk berukuran 2.000 GiB atau lebih kecil dapat diperluas tanpa gangguan layanan.
Pod harus dalam status RunningPod harus tetap dalam status Running selama proses perluasan. Jika tidak dalam status Running, gunakan metode berbasis restart sebagai gantinya.

Persyaratan StorageClass

StorageClass harus memiliki allowVolumeExpansion: true. StorageClass yang dibuat oleh ACK mengatur nilai ini secara otomatis. Untuk StorageClass yang dibuat secara manual, atur nilai ini secara eksplisit:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: alicloud-disk-available
provisioner: alicloud/disk
allowVolumeExpansion: true

Cadangkan data Anda

Sebelum memperluas, buat Snapshot disk untuk melindungi dari kehilangan data akibat kesalahan selama proses perluasan.

Berikan izin ResizeDisk kepada peran RAM

Sebelum memperluas volume disk, berikan izin ResizeDisk kepada Master RAM Role kluster. Tanpa izin ini, permintaan perluasan akan mengembalikan error otorisasi.

  1. Masuk ke Konsol ACK.

  2. Pada panel navigasi sebelah kiri, klik Clusters.

  3. Temukan kluster tersebut dan klik Details pada kolom Actions.

  4. Pada panel navigasi sebelah kiri, klik Cluster Information.

  5. Klik tab Cluster Resources, lalu klik tautan di samping Master RAM Role.

  6. Di Konsol RAM, berikan izin ResizeDisk kepada role tersebut. Untuk detailnya, lihat Ubah dokumen dan deskripsi kebijakan kustom.

    resizedisk

Untuk cluster khusus ACK yang menggunakan FlexVolume atau kluster ACK yang dikelola, ikuti langkah 1–4 di atas dan klik tautan di samping Master RAM Role.

Perluas volume disk tanpa merestart Pod

Gunakan metode ini saat Pod berada dalam status Running. Disk diperbesar secara online tanpa gangguan layanan.

Periksa status saat ini

  1. Verifikasi bahwa Pod berstatus Running:

    kubectl get pod

    Output yang diharapkan:

    web-0   1/1   Running   0   42s
  2. Periksa penggunaan disk saat ini di dalam Pod:

    kubectl exec web-0 -- df /data

    Output yang diharapkan:

    Filesystem   1K-blocks    Used  Available  Use%  Mounted on
    /dev/vdb      20511312   45080   20449848    1%  /data

    Catat ukuran saat ini: 20 GiB.

  3. Konfirmasi bahwa PVC dalam status bound dan periksa kapasitasnya saat ini:

    kubectl get pvc

    Output yang diharapkan:

    NAME             STATUS   VOLUME                   CAPACITY   ACCESS MODES   STORAGECLASS              AGE
    disk-ssd-web-0   Bound    d-wz9hpoifm43yn9zie6gl   20Gi       RWO            alicloud-disk-available   57s

Perluas volume

  1. Lakukan patch pada PVC untuk meminta ukuran penyimpanan baru:

    kubectl patch pvc disk-ssd-web-0 -p '{"spec":{"resources":{"requests":{"storage":"30Gi"}}}}'

    Tunggu sekitar satu menit hingga proses perluasan selesai.

Verifikasi perluasan

  1. Konfirmasi bahwa PV telah diperbarui menjadi 30 GiB:

    kubectl get pv d-wz9hpoifm43yn9zie6gl

    Output yang diharapkan:

    NAME                     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                    STORAGECLASS              REASON   AGE
    d-wz9hpoifm43yn9zie6gl   30Gi       RWO            Delete           Bound    default/disk-ssd-web-0   alicloud-disk-available            5m23s
  2. Konfirmasi bahwa PVC mencerminkan kapasitas baru:

    kubectl get pvc
    kubectl get pv

    Output yang diharapkan:

    NAME             STATUS   VOLUME                   CAPACITY   ACCESS MODES   STORAGECLASS              AGE
    disk-ssd-web-0   Bound    d-wz9hpoifm43yn9zie6gl   30Gi       RWO            alicloud-disk-available   5m10s
  3. Verifikasi bahwa ukuran disk baru terlihat di dalam Pod:

    kubectl exec web-0 -- df /data

    Output yang diharapkan:

    Filesystem   1K-blocks    Used  Available  Use%  Mounted on
    /dev/vdb      30832548   45036   30771128    1%  /data

    Volume disk telah diperluas dari 20 GiB menjadi 30 GiB tanpa downtime.

Restart Pod untuk memperluas volume disk

Gunakan metode ini ketika sistem file tidak mencerminkan ukuran baru hingga Pod direstart, atau saat Pod tidak dalam status Running.

Periksa status saat ini

  1. Verifikasi status Pod dan catat ukuran disk saat ini:

    kubectl get pod

    Output yang diharapkan:

    web-0   1/1   Running   0   42s
  2. Periksa penggunaan disk saat ini di dalam Pod:

    kubectl exec web-0 -- df /data

    Output yang diharapkan:

    Filesystem   1K-blocks    Used  Available  Use%  Mounted on
    /dev/vdb      20511312   45080   20449848    1%  /data
  3. Konfirmasi bahwa PVC dan PV dalam status bound:

    kubectl get pvc
    kubectl get pv

Cegah Pod agar tidak dijadwalkan ulang

  1. Temukan label zona dari PV:

    kubectl get pv d-wz9g2j5qbo37r2lamkg4 -oyaml | grep failure-domain.beta.kubernetes.io/zone

    Output yang diharapkan:

    failure-domain.beta.kubernetes.io/zone: cn-shenzhen-e
  2. Ubah label zona menjadi nilai yang tidak valid sehingga Pod tidak dapat dijadwalkan:

    kubectl label pv d-wz9g2j5qbo37r2lamkg4 failure-domain.beta.kubernetes.io/zone=cn-shenzhen-e-nozone --overwrite

    Output yang diharapkan:

    persistentvolume/d-wz9g2j5qbo37r2lamkg4 labeled
  3. Hapus Pod untuk memicu restart. Pod akan masuk ke status Pending karena label zona tidak lagi cocok dengan node mana pun:

    kubectl delete pod web-0

    Verifikasi bahwa Pod berstatus Pending:

    kubectl get pod

    Output yang diharapkan:

    web-0   0/1   Pending   0   27s

Perluas volume

  1. Lakukan patch pada PVC untuk meminta ukuran penyimpanan baru:

    kubectl patch pvc disk-ssd-web-0 -p '{"spec":{"resources":{"requests":{"storage":"30Gi"}}}}'

Kembalikan Pod

  1. Kembalikan label zona asli agar Pod dapat dijadwalkan kembali:

    kubectl label pv d-wz9g2j5qbo37r2lamkg4 failure-domain.beta.kubernetes.io/zone=cn-shenzhen-e --overwrite

    Output yang diharapkan:

    persistentvolume/d-wz9g2j5qbo37r2lamkg4 labeled

    Tunggu sekitar satu menit hingga Pod direstart dan proses perluasan selesai.

Verifikasi perluasan

  1. Konfirmasi bahwa Pod berstatus Running:

    kubectl get pod

    Output yang diharapkan:

    web-0   1/1   Running   0   3m23s
  2. Konfirmasi bahwa PVC mencerminkan kapasitas baru:

    kubectl get pvc

    Output yang diharapkan:

    disk-ssd-web-0   Bound   d-wz9g2j5qbo37r2lamkg4   30Gi   RWO   alicloud-disk-available   17m
  3. Konfirmasi bahwa PV mencerminkan kapasitas baru:

    kubectl get pv d-wz9g2j5qbo37r2lamkg4

    Output yang diharapkan:

    d-wz9g2j5qbo37r2lamkg4   30Gi   RWO   Delete   Bound   default/disk-ssd-web-0   alicloud-disk-available   17m
  4. Verifikasi bahwa ukuran disk baru terlihat di dalam Pod:

    kubectl exec web-0 -- df /data

    Output yang diharapkan:

    /dev/vdb   30832548   45036   30771128   1%   /data

    Volume disk telah diperluas dari 20 GiB menjadi 30 GiB.

Topik terkait