All Products
Search
Document Center

Container Service for Kubernetes:Gunakan volume penyimpanan dinamis dari command line

Last Updated:Jun 26, 2026

Kubernetes tidak secara otomatis mengetahui disk cloud mana yang harus disediakan untuk suatu workload—Anda harus mendefinisikan StorageClass yang memetakan tipe disk dan preferensi zona, lalu mereferensikannya dalam persistent volume claim (PVC). Saat PVC dibuat, Disk-Controller akan secara otomatis menyediakan disk tersebut dan mengikatnya sebagai persistent volume (PV).

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

  • Kluster ACK yang sedang berjalan dengan kubectl yang telah dikonfigurasi

  • Izin untuk membuat sumber daya StorageClass dan PVC di kluster

StorageClass Bawaan

Kluster single-zone mencakup StorageClass berikut secara bawaan. Kluster multi-zona mengharuskan Anda membuat StorageClass secara manual untuk menentukan zona target.

StorageClass Tipe disk Paling cocok untuk
alicloud-disk-efficiency Ultra disk Workload yang sensitif terhadap biaya dengan kebutuhan I/O moderat
alicloud-disk-ssd Standard SSD Workload tujuan umum yang memerlukan performa andal
alicloud-disk-essd Enhanced SSD (ESSD) Workload produksi berlatensi rendah dan throughput tinggi
alicloud-disk-available Mode high-availability Workload di mana ketersediaan disk lebih diprioritaskan daripada tipe disk
alicloud-disk-topology Mode WaitForFirstConsumer Kluster multi-zona di mana penjadwalan pod menentukan zona disk
Untuk alicloud-disk-available, sistem mencoba membuat standard SSD terlebih dahulu, lalu menggunakan ultra disk jika sumber daya SSD habis. Untuk versi Disk-Controller sebelum v1.14.8.44-c23b62c5-aliyun, urutan fallback-nya adalah: enhanced SSD (ESSD) → standard SSD → ultra disk.

Buat StorageClass

Pilih tipe StorageClass berdasarkan konfigurasi kluster Anda:

Buat StorageClass dengan ID zona

Gunakan pendekatan ini untuk kluster single-zone atau saat Anda ingin menetapkan pembuatan disk ke zona tertentu.

  1. Buat file bernama storage-class.yaml dengan konten berikut:

    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
      name: alicloud-disk-ssd-hangzhou-b
    provisioner: alicloud/disk
    parameters:
      type: cloud_ssd
      regionId: cn-hangzhou
      zoneId: cn-hangzhou-b
    reclaimPolicy: Retain  # Default is Delete. Set to Retain to prevent accidental data loss.

    Tabel berikut menjelaskan parameter tersebut:

    Parameter Deskripsi Wajib Default
    provisioner Plugin volume untuk menyediakan disk. Atur ke alicloud/disk. Ya
    type Tipe disk. Nilai yang valid: cloud_efficiency (ultra disk), cloud_ssd (standard SSD), cloud_essd (ESSD), available (mode high-availability yang secara otomatis memilih tipe terbaik yang tersedia). Ya
    regionId Wilayah tempat disk dibuat. Ya
    zoneId Zona tempat disk dibuat. Untuk kluster multi-zona, tentukan beberapa zona yang dipisahkan koma: cn-hangzhou-a,cn-hangzhou-b,cn-hangzhou-c. Ya
    reclaimPolicy Kebijakan untuk menarik kembali disk saat PVC dihapus. Retain menyimpan disk; Delete menghapusnya. Atur ke Retain untuk mencegah kehilangan data. Tidak Delete
    encrypted Apakah disk dienkripsi atau tidak. Tidak false
  2. Terapkan StorageClass:

    kubectl apply -f storage-class.yaml
  3. Verifikasi bahwa StorageClass telah dibuat:

    kubectl get storageclass alicloud-disk-ssd-hangzhou-b

    Output harus menampilkan StorageClass dengan alicloud/disk sebagai provisioner.

Buat StorageClass dalam mode WaitForFirstConsumer

Pada kluster multi-zona, PV dapat disediakan sebelum Pod dijadwalkan—sehingga disk ditempatkan di zona yang berbeda dari tempat Pod akhirnya berjalan. Jika hal ini terjadi, Pod gagal dimulai karena tidak dapat menyambungkan disk dari zona lain. Mode WaitForFirstConsumer mengatasi masalah ini dengan menunda penyediaan disk hingga Pod yang mengonsumsi telah dijadwalkan, sehingga disk selalu dibuat di zona yang sama dengan Pod tersebut.

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: alicloud-disk-topology-ssd
provisioner: alicloud/disk
parameters:
  type: cloud_ssd
reclaimPolicy: Retain  # Default is Delete.
volumeBindingMode: WaitForFirstConsumer

Terapkan StorageClass:

kubectl apply -f storage-class-topology.yaml

Cara pemilihan zona bekerja—tabel berikut merangkum perilaku penempatan disk berdasarkan konfigurasi StorageClass Anda:

Konfigurasi Penempatan disk
Tanpa zoneId, tanpa WaitForFirstConsumer Zona tempat komponen Disk-Controller dideploy
zoneId ditentukan, tanpa WaitForFirstConsumer Zona yang ditentukan, dipilih secara round-robin
WaitForFirstConsumer diaktifkan Zona node tempat pod yang mengonsumsi dijadwalkan

Buat PVC dan Pod

Manifes berikut membuat PVC yang didukung oleh StorageClass alicloud-disk-ssd-hangzhou-b dan Pod yang memasang disk tersebut:

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: disk-ssd
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: alicloud-disk-ssd-hangzhou-b
  resources:
    requests:
      storage: 20Gi
---
kind: Pod
apiVersion: v1
metadata:
  name: disk-pod-ssd
spec:
  containers:
  - name: disk-pod
    image: nginx
    volumeMounts:
      - name: disk-pvc
        mountPath: "/mnt"
  restartPolicy: "Never"
  volumes:
    - name: disk-pvc
      persistentVolumeClaim:
        claimName: disk-ssd

Terapkan manifes:

kubectl apply -f pvc-pod.yaml

Verifikasi bahwa PVC telah terikat dan Pod sedang berjalan:

kubectl get pvc disk-ssd
kubectl get pod disk-pod-ssd

PVC yang berhasil terikat menampilkan STATUS: Bound. Pod yang sedang berjalan menampilkan STATUS: Running.

Buat StatefulSet multi-instans

Gunakan volumeClaimTemplates untuk membuat PVC dan PV terpisah secara dinamis untuk setiap replika StatefulSet. Contoh berikut membuat StatefulSet nginx dua replika dengan disk 20 GiB per replika:

apiVersion: v1
kind: Service
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  ports:
  - port: 80
    name: web
  clusterIP: None
  selector:
    app: nginx
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: web
spec:
  selector:
    matchLabels:
      app: nginx
  serviceName: "nginx"
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80
          name: web
        volumeMounts:
        - name: disk-ssd
          mountPath: /data
  volumeClaimTemplates:
  - metadata:
      name: disk-ssd
    spec:
      accessModes: [ "ReadWriteOnce" ]
      storageClassName: "alicloud-disk-ssd-hangzhou-b"
      resources:
        requests:
          storage: 20Gi

Terapkan manifes:

kubectl apply -f statefulset.yaml

Verifikasi bahwa StatefulSet, Pod, dan PVC semuanya telah dibuat:

kubectl get statefulset web
kubectl get pods -l app=nginx
kubectl get pvc -l app=nginx

Setiap Pod (web-0, web-1) mendapatkan PVC-nya sendiri (disk-ssd-web-0, disk-ssd-web-1), masing-masing didukung oleh disk yang disediakan secara independen.

Langkah berikutnya