All Products
Search
Document Center

Container Service for Kubernetes:Gunakan volume cloud disk yang disediakan secara statis

Last Updated:Sep 12, 2026

Dengan membuat PV dan PVC secara manual, Anda dapat memasang cloud disk ke Pod sebagai volume yang disediakan secara statis. Metode ini menyediakan penyimpanan persisten, ideal untuk workload yang memerlukan performa I/O disk tinggi dan latensi rendah tanpa berbagi data.

Disk cocok untuk skenario berikut:

  • Aplikasi yang memerlukan throughput I/O disk tinggi tanpa berbagi data, seperti MySQL dan Redis.

  • Penulisan log berkecepatan tinggi.

  • Persistensi data yang independen dari siklus hidup pod.

Alur Kerja

  1. Buat PV
    Daftarkan cloud disk yang sudah ada di kluster Anda dengan menentukan ID-nya, kapasitas, mode akses, dan afinitas zona. Hal ini memastikan bahwa Pod dijadwalkan ke node yang tepat.

  2. Buat PVC
    Aplikasi Anda meminta resource penyimpanan melalui PVC, yang kemudian mengikat PV yang kompatibel.

  3. Pasang PVC di aplikasi Anda
    Pasang PVC yang telah terikat ke dalam Pod aplikasi Anda, sehingga tersedia sebagai direktori persisten di dalam kontainer.

Prasyarat

  • Persyaratan komponen CSI: Komponen csi-plugin dan csi-provisioner harus diinstal.

    Komponen CSI diinstal secara default. Periksa halaman Add-ons untuk memastikan komponen tersebut masih terinstal. Kami merekomendasikan untuk memutakhirkan komponen CSI ke versi terbaru.
  • Cloud disk harus berada dalam status Available dan memenuhi persyaratan berikut:

    • Batasan zona ketersediaan: Kecuali cloud disk ESSD zone-redundant, tipe cloud disk lain hanya dapat disambungkan ke pod dalam zona ketersediaan yang sama.

    • Batasan family tipe instans: Beberapa tipe cloud disk hanya dapat disambungkan ke family tipe instans tertentu.

  • Batasan node virtual: Untuk menggunakan cloud disk pada node virtual, kluster dan kube-scheduler Anda harus memenuhi persyaratan versi berikut.

    Persyaratan Versi

    Versi Kluster

    Versi Kube-scheduler

    1.28 atau lebih baru

    6.9.3 atau lebih baru

    1.26

    6.8.7

    1.24

    6.4.7

    1.22

    6.4.5

  • Batasan node Lingjun: Untuk menggunakan cloud disk pada node Lingjun, persyaratan berikut harus dipenuhi.

    Detail

Langkah 1: Buat PV

Buat PV untuk mendeklarasikan cloud disk yang sudah ada sebagai resource penyimpanan yang tersedia di kluster.

kubectl

  1. Buat file bernama disk-pv.yaml dengan konten berikut.

    Dapatkan ID disk, ukuran disk, ID zona, dan kategori disk, lalu ganti variabel dalam file YAML dengan nilai aktual.
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      # ID cloud disk yang sudah ada, misalnya d-uf628m33r5rsbi******
      name: "<YOUR-DISK-ID>"
      annotations:
        # Direkomendasikan. Memastikan Pod dijadwalkan ke node yang mendukung tipe disk ini.
        # <YOUR-DISK-CATEGORY> adalah kategori cloud disk yang sudah ada. Nilai yang didukung mencakup cloud_essd_entry, cloud_auto, cloud_essd, cloud_ssd, cloud_efficiency, dan cloud_regional_disk_auto.
        csi.alibabacloud.com/volume-topology: '{"nodeSelectorTerms":[{"matchExpressions":[{"key":"node.csi.alibabacloud.com/disktype.<YOUR-DISK-CATEGORY>","operator":"In","values":["available"]}]}]}'
    spec:
      capacity:
        # Ukuran cloud disk yang sudah ada, misalnya 20Gi.
        storage: "<YOUR-DISK-SIZE>"
      claimRef:
        apiVersion: v1
        kind: PersistentVolumeClaim
        namespace: default
        name: disk-pvc
      accessModes:
        - ReadWriteOnce
      persistentVolumeReclaimPolicy: Retain
      csi:
        driver: diskplugin.csi.alibabacloud.com
        # ID cloud disk yang sudah ada, misalnya d-uf628m33r5rsbi******
        volumeHandle: "<YOUR-DISK-ID>"
      nodeAffinity:
        required:
          nodeSelectorTerms:
          - matchExpressions:
            - key: topology.diskplugin.csi.alibabacloud.com/zone
              operator: In
              values:
              # Zona tempat cloud disk berada, misalnya cn-shanghai-f.
              - "<YOUR-DISK-ZONE-ID>"
      storageClassName: alicloud-disk-topology-alltype
      volumeMode: Filesystem

    Tabel berikut menjelaskan parameter utama.

    Parameter

    Deskripsi

    csi.alibabacloud.com/volume-topology

    Anotasi ini mengatur afinitas node untuk cloud disk, memastikan bahwa Pod yang menggunakan disk ini dijadwalkan ke node yang mendukung tipe disk tersebut. Hal ini mencegah kegagalan pemasangan akibat ketidakcocokan node.

    Untuk memastikan penjadwalan yang akurat, kami merekomendasikan agar Anda menentukan kategori disk. Tipe yang didukung adalah sebagai berikut:

    • ESSD Entry disk: cloud_essd_entry

    • ESSD AutoPL disk: cloud_auto

    • ESSD disk: cloud_essd

    • Standard SSD: cloud_ssd

    • Ultra disk: cloud_efficiency

    • Zone-redundant disk: cloud_regional_disk_auto (memerlukan penyesuaian pada parameter nodeAffinity)

    claimRef

    Menentukan PVC yang dapat mengikat PV ini. Untuk mengizinkan PVC apa pun mengikat PV ini, hapus parameter ini.

    accessModes

    Mode akses. Mode yang didukung bergantung pada apakah fitur multi-attach untuk cloud disk diaktifkan.

    • Multi-attach dinonaktifkan: Hanya ReadWriteOnce (RWO) yang didukung. Cloud disk dapat dipasang ke satu node dalam mode baca/tulis.

    • Multi-attach diaktifkan:

      • Sebagai sistem file standar (diformat): Mendukung ReadWriteOnce (RWO) dan ReadOnlyMany (ROX).

        Untuk mencegah korupsi data akibat penulisan konkuren ke sistem file seperti ext4 di beberapa node, mode ReadWriteMany (RWX) tidak didukung.
      • Sebagai perangkat blok mentah (tidak diformat): Mendukung ReadWriteOnce (RWO), ReadOnlyMany (ROX), dan ReadWriteMany (RWX).

    persistentVolumeReclaimPolicy

    Kebijakan reclaim untuk PV, yang menentukan apa yang terjadi pada PV dan cloud disk dasarnya ketika PVC yang terikat dihapus.

    • Delete: Ketika PVC dihapus, baik PV maupun cloud disk dihapus. Gunakan pengaturan ini dengan hati-hati.

      Untuk mencegah kehilangan data secara tidak sengaja, Anda dapat membuat kebijakan snapshot otomatis untuk mencadangkan cloud disk sebelum penghapusan.
    • Retain: Ketika PVC dihapus, PV dan cloud disk tidak dihapus. Anda harus melepaskannya secara manual.

    driver

    Atur ke diskplugin.csi.alibabacloud.com saat menggunakan disk Alibaba Cloud.

    nodeAffinity

    Pengaturan afinitas node. Kecuali disk ESSD zone-redundant, tipe cloud disk lain hanya dapat disambungkan ke Pod dalam zona yang sama. Konfigurasi ini memastikan bahwa Pod dijadwalkan ke node ECS dalam zona yang sama dengan cloud disk.

    Untuk disk zone-redundant, ubah konfigurasi menjadi berikut untuk mengizinkan disk dipasang di zona mana pun dalam wilayah tersebut.

    Dalam konfigurasi ini, <YOUR-DISK-REGION-ID> adalah wilayah tempat cloud disk berada, misalnya cn-shanghai.
    nodeAffinity:
      required:
        nodeSelectorTerms:
        - matchExpressions:
          - key: topology.kubernetes.io/region
            operator: In
            values:
            - "<YOUR-DISK-REGION-ID>"

    storageClassName

    Pengaturan ini tidak berpengaruh pada volume yang disediakan secara statis, dan Anda tidak perlu membuat StorageClass yang sesuai. Namun, Anda harus memastikan bahwa nilai pengaturan ini sama di PV dan PVC.

  2. Buat PV.

    kubectl create -f disk-pv.yaml
  3. Periksa status PV dan pastikan statusnya Available.

    kubectl get pv

    Output yang diharapkan:

    NAME                     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM              STORAGECLASS                             VOLUMEATTRIBUTESCLASS   REASON   AGE
    d-uf628m33r5rsbi******   20Gi       RWO            Retain           Available   default/disk-pvc   alicloud-disk-topology-alltype           <unset>                          1m36s

Konsol

  1. Pada halaman Kluster ACK, klik nama kluster Anda. Di panel navigasi kiri, klik Volumes > Persistent Volumes.

  2. Pada halaman Persistent Volumes, klik Create, atur PV Type ke Cloud Disk, dan konfigurasikan parameter PV sesuai petunjuk.

    Parameter

    Deskripsi

    Access Mode

    Hanya ReadWriteOnce yang didukung.

    Disk ID:

    Klik Select Disk dan pilih cloud disk yang belum dipasang di wilayah dan zona yang sama dengan node.

    File System Type:

    Pilih tipe sistem file untuk menyimpan data di cloud disk. File System Type: yang didukung meliputi ext4, ext3, xfs, dan vfat.

Langkah 2: Buat PVC

Buat PVC untuk mengikat PV yang Anda buat pada langkah sebelumnya.

kubectl

  1. Buat file bernama disk-pvc.yaml dengan konten berikut.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: disk-pvc
    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          # Kapasitas penyimpanan yang diminta, harus sesuai dengan kapasitas PV.
          storage: "<YOUR-DISK-SIZE>"
      # Harus sesuai dengan storageClassName yang ditentukan di PV.
      storageClassName: alicloud-disk-topology-alltype
      # Tentukan PV yang akan diikat.
      volumeName: "<YOUR-DISK-ID>"

    Tabel berikut menjelaskan parameter utama.

    Parameter

    Deskripsi

    accessModes

    Mode akses. Harus konsisten dengan konfigurasi PV.

    storage

    Kapasitas penyimpanan yang dialokasikan ke Pod. Harus konsisten dengan kapasitas PV.

    storageClassName

    Pengaturan ini tidak berpengaruh pada volume yang disediakan secara statis, dan Anda tidak perlu membuat StorageClass yang sesuai. Namun, Anda harus memastikan bahwa nilai pengaturan ini sama di PV dan PVC.

    volumeName

    Menentukan PV yang akan diikat. Untuk mengizinkan PVC mengikat PV yang sesuai apa pun, hapus parameter ini.

  2. Buat PVC.

    kubectl create -f disk-pvc.yaml
  3. Periksa status PVC dan pastikan statusnya Bound.

    kubectl get pvc

    Output yang diharapkan, yang menunjukkan bahwa PVC terikat ke PV cloud disk:

    NAME                       STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS                     VOLUMEATTRIBUTESCLASS   AGE
    disk-pvc                   Bound    d-bp1ff1mn65jk8s******                     20Gi       RWO            alicloud-disk-topology-alltype   <unset>                 6s

Konsol

  1. Di panel navigasi kiri halaman manajemen kluster, pilih Storage > PVCs.

  2. Pada halaman Persistent Volume Claims, klik Create, atur PVC Type ke Disk, dan buat PVC sesuai petunjuk.

    Parameter

    Deskripsi

    Allocation Mode

    Pilih Existing Volumes.

    Existing Volumes

    Pilih PV yang Anda buat sebelumnya.

    Capacity

    Kapasitas penyimpanan yang dialokasikan ke Pod, yang tidak boleh melebihi kapasitas cloud disk.

Langkah 3: Buat aplikasi dan pasang cloud disk

Buat workload dan gunakan cloud disk dengan memasang PVC.

Penting

Cloud Disk menyediakan penyimpanan non-shared dan, kecuali jika multi-attach diaktifkan, hanya dapat dipasang ke satu Pod sekaligus. Berbagi PVC dalam Deployment multi-replika dapat mencegah Pod baru dimulai jika Cloud Disk sedang digunakan oleh Pod lain.

Jika Anda tetap perlu menggunakan Cloud Disk dengan Deployment, pertimbangkan menggunakan Cloud Disk sebagai volume sementara. Untuk mengaktifkan multi-attach, lihat Gunakan Cloud Disk berbasis NVMe dengan multi-attach dan reservasi.

kubectl

  1. Buat file bernama disk-test.yaml dengan konten berikut.

    Contoh berikut membuat StatefulSet dengan satu replika. Pod meminta resource penyimpanan melalui PVC bernama disk-pvc dan memasang volume ke path /data.
    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: disk-test
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx
      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
    Penting
    • Saat Anda mengonfigurasi securityContext.fsgroup, kubelet secara rekursif mengubah izin file (chmod/chown) saat memasang volume. Hal ini dapat meningkatkan waktu pemasangan secara signifikan untuk volume dengan banyak file.

      Untuk kluster versi 1.20 atau lebih baru, kami merekomendasikan mengatur fsGroupChangePolicy ke OnRootMismatch. Ini mengoptimalkan performa pemasangan dengan hanya melakukan perubahan izin rekursif saat volume dipasang pertama kali dan izin direktori root tidak sesuai. Jika performa tetap menjadi masalah atau Anda memerlukan kontrol izin yang lebih granular, gunakan initContainer untuk mengelola izin sebelum kontainer aplikasi dimulai.

    • Saat Pod dibangun ulang, Pod tersebut memasang kembali cloud disk asli. Jika batasan lain mencegah Pod dijadwalkan ke zona aslinya, Pod akan tetap dalam status Pending karena tidak dapat memasang cloud disk.

  2. Buat StatefulSet dan pasang cloud disk.

    kubectl create -f disk-test.yaml
  3. Periksa status Pod dan pastikan statusnya Running.

    kubectl get pod -l app=nginx

    Output yang diharapkan:

    NAME          READY   STATUS    RESTARTS   AGE
    disk-test-0   1/1     Running   0          14s
  4. Periksa path pemasangan untuk memastikan cloud disk telah dipasang.

    kubectl exec disk-test-0 -- df -h /data

    Output yang diharapkan:

    Filesystem      Size  Used Avail Use% Mounted on
    /dev/vdb         20G   24K   20G   1% /data

Konsol

  1. Di panel navigasi kiri halaman manajemen kluster, pilih Workload > StatefulSets.

  2. Pada halaman StatefulSets, klik Create from Image, dan ikuti petunjuk di halaman untuk mengonfigurasi parameter StatefulSet.

    Tabel berikut menjelaskan item konfigurasi utama. Untuk instruksi konfigurasi detail, lihat Buat StatefulSet.

    Halaman konfigurasi

    Parameter

    Deskripsi

    Basic Information

    Replicas:

    Konfigurasikan jumlah replika untuk StatefulSet.

    Container

    Image Name

    Masukkan alamat image yang digunakan untuk men-deploy aplikasi, seperti anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6.

    Required Resources

    Atur resource vCPU, memori, dan penyimpanan sementara yang diperlukan.

    Dalam contoh ini, CPU diatur ke 0,25 Core, dan memori diatur ke 512 MiB.

    Volume

    Klik Add PVC, lalu konfigurasikan parameter.

    • Mount Source: Pilih PVC yang Anda buat sebelumnya.

    • Container Path: Masukkan path di kontainer tempat cloud disk dipasang, seperti /data.

  3. Periksa status deployment aplikasi.

    1. Pada halaman StatefulSets, klik nama aplikasi.

    2. Pada tab Pods, pastikan Pod berada dalam status Running.

Verifikasi persistensi data

Ikuti proses "tulis data > hapus Pod > periksa data" untuk memverifikasi bahwa data yang disimpan di cloud disk tetap ada setelah Pod dibangun ulang.

  1. Tulis data uji ke Pod.

    1. Periksa path pemasangan untuk melihat data di cloud disk.

      kubectl exec disk-test-0 -- ls /data

      Output yang diharapkan:

      lost+found
    2. Tulis data uji ke Pod.

      Ambil Pod disk-test-0 sebagai contoh. Buat file uji di direktori /data, yaitu path pemasangan cloud disk.

      kubectl exec disk-test-0 -- touch /data/test
  2. Simulasikan kegagalan Pod dengan menghapus Pod.

    kubectl delete pod disk-test-0

    Jalankan perintah kubectl get pod -l app=nginx lagi. Pod dengan nama yang sama akan dibuat secara otomatis.

  3. Verifikasi data di Pod baru.

    Periksa kembali direktori /data di Pod baru disk-test-0.

    kubectl exec disk-test-0 -- ls /data

    Dalam output yang diharapkan, file uji yang dibuat sebelumnya masih ada, menunjukkan bahwa data tetap ada meskipun Pod dihapus dan dibangun ulang.

    lost+found  
    test

Pertimbangan produksi

  • Ketersediaan tinggi

    • Pemilihan disk cloud

      Konfigurasikan dengan benar nodeAffinity dan csi.alibabacloud.com/volume-topology di PV untuk memastikan bahwa Pod dapat dijadwalkan dengan sukses dan cloud disk dapat dipasang ulang setelah Pod dibangun ulang.

    • Pemilihan cloud disk

      Evaluasi faktor seperti performa, penagihan, zona ketersediaan, dan family tipe instans untuk memastikan pod Anda dijadwalkan ke node yang kompatibel.

      Saat memilih tipe cloud disk, perhatikan bahwa cloud disk SSD dan Ultra cloud disk sedang dihentikan. Kami merekomendasikan menggunakan cloud disk ESSD PL0 atau cloud disk ESSD Entry untuk menggantikan Ultra cloud disk, dan cloud disk ESSD AutoPL untuk menggantikan cloud disk SSD.

    • Pemulihan bencana lintas-AZ

      • Pemulihan bencana tingkat aplikasi: Untuk workload kritis seperti database, sebarkan instans aplikasi di beberapa zona ketersediaan dan gunakan mekanisme sinkronisasi data native aplikasi untuk ketersediaan tinggi.

      • Pemulihan bencana tingkat penyimpanan: Pilih tipe cloud disk yang mendukung pemulihan bencana multi-AZ. Fitur ini menulis data secara sinkron ke zona ketersediaan berbeda dalam wilayah yang sama, memungkinkan failover lintas-AZ. Untuk informasi selengkapnya, lihat Gunakan ESSD Co-located Redundant Disks.

  • Keamanan data

  • Optimalisasi performa dan biaya

Bersihkan resource

Untuk menghindari biaya tak terduga dan memastikan keamanan data, ikuti proses ini untuk melepaskan resource yang tidak digunakan.

  1. Hapus workload

    • Aksi: Hapus semua aplikasi yang menggunakan PVC terkait, seperti Deployment dan StatefulSet. Aksi ini menghentikan Pod yang berjalan dan melepas volume.

      Contoh perintah: kubectl delete deployment <YOUR-DEPLOYMENT-NAME>

  2. Hapus PVC

    • Aksi: Hapus PVC yang terkait dengan aplikasi. Setelah penghapusan, apa yang terjadi pada PV yang terikat bergantung pada persistentVolumeReclaimPolicy-nya.

    • Detail kebijakan reclaim:

      • Retain: Setelah PVC dihapus, status PV yang terikat berubah menjadi Released, tetapi objek PV dan cloud disk backend tetap dipertahankan. Jika Anda memastikan bahwa cloud disk dan semua datanya tidak lagi diperlukan, lihat Lepaskan cloud disk untuk menghapusnya. Aksi ini tidak dapat dikembalikan, jadi lakukan dengan hati-hati.

      • Delete: Setelah PVC dihapus, baik objek PV maupun cloud disk backend dihapus. Data di cloud disk akan hilang secara permanen dan tidak dapat dipulihkan. Gunakan kebijakan ini dengan hati-hati.

        Untuk mencegah kehilangan data secara tidak sengaja, Anda dapat membuat kebijakan snapshot otomatis untuk mencadangkan cloud disk sebelum penghapusan.
    • Contoh perintah: kubectl delete pvc <YOUR-PVC-NAME>

  3. Hapus objek PV: Aksi ini hanya menghapus definisi resource dari kluster dan tidak menghapus cloud disk backend.

    • Aksi: Hapus secara manual PV yang berada dalam status Released.

    • Contoh perintah: kubectl delete pv <YOUR-PV-NAME>

Dokumen terkait