All Products
Search
Document Center

Container Service for Kubernetes:Volume cloud disk statis untuk penyimpanan persisten - Flexvolume

Last Updated:Jun 21, 2026

Ketika kontainer dalam layanan stateful gagal, datanya dapat hilang. Penyimpanan persisten mencegah kehilangan data tersebut. Topik ini menjelaskan cara menggunakan volume cloud disk yang disediakan secara statis untuk penyimpanan persisten.

Prasyarat

Selesaikan tugas-tugas berikut:

Informasi latar belakang

Kasus penggunaan umum untuk cloud disk meliputi:

  • Layanan penyimpanan data yang memerlukan I/O disk tinggi dan tidak memerlukan berbagi data, seperti MySQL dan Redis.

  • Penulisan log berkecepatan tinggi.

  • Mempertahankan data melebihi siklus hidup Pod.

Jika Anda memiliki cloud disk yang sudah ada, gunakan volume yang disediakan secara statis.

Untuk menggunakan volume cloud disk yang disediakan secara statis, Anda harus membuat Persistent Volume (PV) dan Persistent Volume Claim (PVC) secara manual. Untuk informasi selengkapnya, lihat Gunakan volume cloud disk yang disediakan secara statis.

Batasan

  • Cloud disk tidak dapat dibagikan dan hanya dapat dipasang ke satu Pod dalam satu waktu.

  • Cloud disk hanya dapat dipasang ke node yang berada di zona yang sama.

Buat PV

  1. Buat file bernama pv-static.yaml.

    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>"
    Catatan
    • alicloud-pvname: <your-disk-id>: Nama PV, yang harus sama dengan ID cloud disk Anda.

    • failure-domain.beta.kubernetes.io/zone: <your-zone>: Zona tempat cloud disk berada. Contohnya, cn-hangzhou-b.

    • failure-domain.beta.kubernetes.io/region: <your-region>: Wilayah tempat cloud disk berada. Contohnya, cn-hangzhou.

    Jika kluster Anda mencakup beberapa zona, Anda harus menentukan failure-domain.beta.kubernetes.io/zone dan failure-domain.beta.kubernetes.io/region. Hal ini memastikan Pod dijadwalkan ke zona yang sama dengan cloud disk.

  2. Jalankan perintah berikut untuk membuat PV.

    kubectl create -f pv-static.yaml

    Verification Result

    1. Masuk ke Container Service Management Console.

    2. Di panel navigasi sebelah kiri, klik Clusters.

    3. Pada halaman Clusters, klik nama kluster target, atau klik Details di kolom Actions.

    4. Di panel navigasi sebelah kiri halaman manajemen kluster, pilih Volumes > Persistent Volumes. Anda dapat melihat PV yang baru dibuat dalam daftar. Kapasitasnya adalah 20Gi, mode aksesnya adalah ReadWriteOnce, kebijakan reclaim-nya adalah Retain, dan statusnya adalah Available. PV akan diikat ke Persistent Volume Claim pvc-disk di namespace default. Kolom Actions menyediakan opsi untuk Manage Tags, View YAML, dan Delete.

Buat PVC

  1. Buat file bernama pvc-static.yaml.

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: pvc-disk
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 20Gi
      selector:
        matchLabels:
          alicloud-pvname: <your-disk-id>
  2. Jalankan perintah berikut untuk membuat PVC.

    kubectl create -f pvc-static.yaml

    Verification Result

    1. Masuk ke Container Service Management Console.

    2. Di panel navigasi sebelah kiri, klik Clusters.

    3. Pada halaman Clusters, klik nama kluster target, atau klik Details di kolom Actions.

    4. Di panel navigasi sebelah kiri halaman manajemen kluster, pilih Volumes > Persistent Volume Claims.

    5. Pada halaman Persistent Volume Claims, Anda dapat melihat PVC yang telah Anda buat.

Buat aplikasi

  1. Buat file bernama static.yaml.

    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
  2. Jalankan perintah berikut untuk membuat aplikasi.

    kubectl create -f static.yaml

    Verification Result

    1. Masuk ke Container Service Management Console.

    2. Di panel navigasi sebelah kiri, klik Clusters.

    3. Pada halaman Clusters, klik nama kluster target, atau klik Details di kolom Actions.

    4. Di panel navigasi sebelah kiri halaman manajemen kluster, pilih Workloads > Deployments.

    5. Pada halaman Deployments, Anda dapat melihat aplikasi yang telah Anda buat.

Verifikasi persistensi data

  1. Jalankan perintah berikut untuk mendapatkan nama Pod aplikasi.

    kubectl get pod | grep static

    Output yang diharapkan:

    nginx-static-78c7dcb9d7-g****   2/2     Running     0          32s
  2. Jalankan perintah berikut untuk memverifikasi bahwa cloud disk dipasang ke path /data.

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

    Output yang diharapkan:

    /dev/vdf        20511312    45080  20449848   1% /data
  3. Jalankan perintah berikut untuk menampilkan daftar file di path /data.

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

    Output yang diharapkan:

    lost+found
  4. Jalankan perintah berikut untuk membuat file bernama static di path /data.

    kubectl exec nginx-static-78c7dcb9d7-g**** -- touch /data/static
  5. Jalankan perintah berikut untuk menampilkan daftar file di path /data.

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

    Output yang diharapkan:

    static
    lost+found
  6. Jalankan perintah berikut untuk menghapus Pod bernama nginx-static-78c7dcb9d7-g****.

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

    Output yang diharapkan:

    pod "nginx-static-78c7dcb9d7-g****" deleted
  7. Di jendela terminal terpisah, jalankan perintah berikut untuk memantau Kubernetes saat menghapus dan membuat ulang 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
  8. Jalankan perintah berikut untuk mendapatkan 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
  9. Jalankan perintah berikut untuk menampilkan daftar file di path /data. File static yang Anda buat masih ada, yang membuktikan bahwa data pada cloud disk yang disediakan secara statis bersifat persisten.

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

    Output yang diharapkan:

    static
    lost+found