All Products
Search
Document Center

Container Service for Kubernetes:Gunakan volume persisten disk cloud statis untuk penyimpanan persisten - FlexVolume

Last Updated:Mar 27, 2026

Volume disk yang disediakan secara statis memungkinkan Anda menyambungkan disk Alibaba Cloud yang sudah ada ke sebuah Pod sehingga data tetap tersimpan meskipun Pod direstart atau dijadwalkan ulang. Berbeda dengan penyediaan dinamis, Anda sendiri yang membuat Persistent Volume (PV) dan Persistent Volume Claim (PVC), lalu menyebarkan aplikasi yang mereferensikan PVC tersebut.

Berikut ringkasan prosesnya:

  1. Sebagai administrator kluster, buat PV yang didukung oleh disk yang sudah ada.

  2. Buat PVC yang melakukan bind ke PV menggunakan pemilih label.

  3. Sebarkan aplikasi yang memasang PVC tersebut.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

Batasan

  • Setiap disk hanya dapat dipasang ke satu Pod dalam satu waktu.

  • Disk hanya dapat dipasang ke node yang berada di zona yang sama dengan disk tersebut.

Kasus penggunaan

Penyediaan disk statis cocok untuk:

  • Beban kerja stateful dengan kebutuhan I/O tinggi — database seperti MySQL dan Redis yang memerlukan penyimpanan blok khusus tanpa berbagi data.

  • Penulisan log berkecepatan tinggi — aplikasi yang menulis data log dengan throughput tinggi yang konsisten.

  • Penyimpanan data independen dari Pod — data yang harus bertahan lebih lama daripada Pod mana pun.

Buat PV

  1. Buat file bernama pv-static.yaml dengan konten berikut:

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: <your-disk-id>
      labels:
        alicloud-pvname: <your-disk-id>
        failure-domain.beta.kubernetes.io/zone: <your-zone>
        failure-domain.beta.kubernetes.io/region: <your-region>
    spec:
      capacity:
        storage: 20Gi
      accessModes:
        - ReadWriteOnce
      flexVolume:
        driver: "alicloud/disk"
        fsType: "ext4"
        options:
          volumeId: "<your-disk-id>"

    Ganti placeholder dengan nilai aktual Anda:

    Field Description Required Example
    name (metadata) Nama PV. Atur ke ID disk. Ya <your-disk-id>
    alicloud-pvname Label yang digunakan oleh pemilih PVC untuk melakukan bind ke PV ini. Atur ke ID disk. Ya <your-disk-id>
    failure-domain.beta.kubernetes.io/zone Zona tempat disk ditempatkan. Diperlukan untuk kluster multi-zona agar Pod dijadwalkan ke zona yang benar. Ya (kluster multi-zona) cn-hangzhou-b
    failure-domain.beta.kubernetes.io/region Wilayah tempat disk ditempatkan. Diperlukan untuk kluster multi-zona. Ya (kluster multi-zona) cn-hangzhou
    capacity.storage Ukuran penyimpanan. Ya 20Gi
    volumeId ID disk yang sudah ada untuk disambungkan. Ya <your-disk-id>
    Untuk kluster yang ditempatkan di beberapa zona, label failure-domain.beta.kubernetes.io/zone dan failure-domain.beta.kubernetes.io/region memastikan bahwa Pod dijadwalkan ke zona tempat disk berada. Lihat Pasang volume disk yang disediakan secara statis untuk detail selengkapnya.
  2. Terapkan manifes:

    kubectl create -f pv-static.yaml
  3. Verifikasi bahwa PV telah dibuat: Masuk ke Konsol ACK. Di panel navigasi sebelah kiri, klik Clusters. Pada halaman Clusters, temukan kluster yang ingin Anda kelola, lalu klik nama kluster tersebut atau klik Details di kolom Actions. Di panel navigasi sebelah kiri halaman detail, pilih Volumes > Persistent Volumes. Verifikasi bahwa PV yang baru dibuat ditampilkan.

Buat PVC

  1. Buat file bernama pvc-static.yaml dengan konten berikut:

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: pvc-disk
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 20Gi
      selector:
        matchLabels:
          alicloud-pvname: <your-disk-id>

    Ganti <your-disk-id> dengan ID disk yang Anda gunakan saat membuat PV. Bidang selector.matchLabels melakukan bind PVC ini ke PV yang memiliki label alicloud-pvname yang sesuai.

  2. Terapkan manifes:

    kubectl create -f pvc-static.yaml
  3. Verifikasi bahwa PVC telah dibuat: Masuk ke Konsol ACK. Di panel navigasi sebelah kiri, klik Clusters. Pada halaman Clusters, temukan kluster yang ingin Anda kelola, lalu klik nama kluster tersebut atau klik Details di kolom Actions. Di panel navigasi sebelah kiri halaman detail, pilih Volumes > Persistent Volume Claims. Pada halaman Persistent Volume Claims, verifikasi bahwa PVC yang baru dibuat ditampilkan.

Sebarkan aplikasi

  1. Buat file bernama static.yaml dengan konten berikut:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-static
      labels:
        app: nginx
    spec:
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx
            volumeMounts:
              - name: disk-pvc
                mountPath: "/data"
          volumes:
            - name: disk-pvc
              persistentVolumeClaim:
                claimName: pvc-disk

    Penyebaran ini memasang PVC pvc-disk ke path /data di dalam kontainer.

  2. Terapkan manifes:

    kubectl create -f static.yaml
  3. Verifikasi bahwa Penyebaran dan Pod sedang berjalan:

    kubectl get pod | grep static

    Output yang diharapkan:

    nginx-static-78c7dcb9d7-g****   2/2     Running     0          32s

    Anda juga dapat memverifikasi di Konsol ACK: navigasi ke Workloads > Deployments dan konfirmasi bahwa nginx-static terdaftar.

Verifikasi persistensi data

Lakukan langkah-langkah berikut untuk memastikan bahwa data yang ditulis ke disk tetap tersimpan meskipun Pod dihapus dan dibuat ulang.

  1. Konfirmasi bahwa disk dipasang ke /data:

    kubectl exec nginx-static-78c7dcb9d7-g**** -- df | grep data

    Output yang diharapkan:

    /dev/vdf        20511312    45080  20449848   1% /data
  2. Daftar file di /data:

    kubectl exec nginx-static-78c7dcb9d7-g**** -- ls /data

    Output yang diharapkan:

    lost+found
  3. Buat file uji:

    kubectl exec nginx-static-78c7dcb9d7-g**** -- touch /data/static
  4. Konfirmasi bahwa file tersebut ada:

    kubectl exec nginx-static-78c7dcb9d7-g**** -- ls /data

    Output yang diharapkan:

    static
    lost+found
  5. Hapus Pod untuk memicu pembuatan ulang:

    kubectl delete pod nginx-static-78c7dcb9d7-g****

    Output yang diharapkan:

    pod "nginx-static-78c7dcb9d7-g****" deleted

    Di terminal terpisah, pantau siklus hidup Pod:

    kubectl get pod -w -l app=nginx

    Output yang diharapkan:

    NAME                            READY   STATUS            RESTARTS   AGE
    nginx-static-78c7dcb9d7-g****   2/2     Running           0          50s
    nginx-static-78c7dcb9d7-g****   2/2     Terminating       0          72s
    nginx-static-78c7dcb9d7-h****   0/2     Pending           0          0s
    nginx-static-78c7dcb9d7-h****   0/2     Pending           0          0s
    nginx-static-78c7dcb9d7-h****   0/2     Init:0/1          0          0s
    nginx-static-78c7dcb9d7-g****   0/2     Terminating       0          73s
    nginx-static-78c7dcb9d7-h****   0/2     Init:0/1          0          5s
    nginx-static-78c7dcb9d7-g****   0/2     Terminating       0          78s
    nginx-static-78c7dcb9d7-g****   0/2     Terminating       0          78s
    nginx-static-78c7dcb9d7-h****   0/2     PodInitializing   0          6s
    nginx-static-78c7dcb9d7-h****   2/2     Running           0          8s
  6. Ambil nama Pod yang dibuat ulang:

    kubectl get pod

    Output yang diharapkan:

    NAME                            READY   STATUS      RESTARTS   AGE
    nginx-static-78c7dcb9d7-h****   2/2     Running     0          14s
  7. Verifikasi bahwa file uji masih ada di Pod yang dibuat ulang:

    kubectl exec nginx-static-78c7dcb9d7-h6brd -- ls /data

    Output yang diharapkan:

    static
    lost+found

    File static masih ada, yang mengonfirmasi bahwa data yang ditulis ke disk tetap tersimpan meskipun Pod dihapus dan dibuat ulang.

Langkah berikutnya