全部产品
Search
文档中心

Container Compute Service:Pasang volume disk yang di-provision secara dinamis

更新时间:Jun 28, 2025

Jika aplikasi Anda memerlukan IOPS tinggi dan latensi rendah tetapi tidak memerlukan berbagi data, Anda dapat memasang disk sebagai volume persisten (PV) ke aplikasi Anda. Topik ini menjelaskan cara memasang volume disk yang di-provision secara dinamis ke aplikasi dan memeriksa apakah volume tersebut dapat digunakan untuk menyimpan data.

Informasi latar belakang

Disk adalah perangkat penyimpanan tingkat blok yang menggunakan mekanisme multi-replika terdistribusi untuk memastikan latensi rendah, kinerja tinggi, daya tahan tinggi, dan keandalan tinggi. Disk cocok untuk aplikasi yang memerlukan IOPS tinggi dan latensi rendah tetapi tidak memerlukan berbagi data. Untuk informasi lebih lanjut, lihat Ikhtisar Penyimpanan.

Catatan

Alibaba Cloud Container Compute Service (ACS) hanya mendukung volume disk yang di-provision secara dinamis. ACS tidak mendukung volume disk yang di-provision secara statis.

Prasyarat

Komponen managed-csiprovisioner telah diinstal di kluster ACS.

Catatan

Buka halaman manajemen kluster ACS di konsol ACS. Di panel navigasi kiri halaman manajemen kluster, pilih Operations > Add-ons. Pada tab Storage, Anda dapat memeriksa apakah managed-csiprovisioner telah diinstal.

Batasan

  • Disk tidak dapat dibagi. Sebuah disk hanya dapat dipasang ke satu pod.

  • Anda hanya dapat memasang disk ke pod yang berada di zona yang sama dengan disk tersebut.

Catatan penggunaan

  • Kami merekomendasikan Anda untuk memasang disk ke pod atau StatefulSet alih-alih Deployment.

    Catatan

    Sebuah disk hanya dapat dipasang ke satu pod. Jika Anda ingin memasang disk ke Deployment, Anda harus mengatur jumlah replika pod menjadi satu untuk Deployment tersebut. Jika Anda mengonfigurasi beberapa pod untuk Deployment, Anda tidak dapat memasang volume disk terpisah ke setiap pod. Selain itu, Anda tidak dapat menentukan prioritas pemasangan dan pelepasan volume pod. Saat Anda memulai ulang pod dari Deployment, disk mungkin gagal dipasang ke pod yang dimulai ulang karena kebijakan pembaruan yang digunakan oleh Deployment. Kami merekomendasikan agar Anda tidak memasang disk ke Deployment.

  • Saat Anda memasang volume disk yang di-provision secara dinamis, disk yang dibuat secara otomatis menggunakan metode penagihan bayar sesuai pemakaian.

  • Saat Anda memasang volume disk yang di-provision secara dinamis ke aplikasi, jika konfigurasi aplikasi mencakup parameter securityContext.fsgroup, ACS secara otomatis menjalankan perintah chmod dan chown setelah volume dipasang, yang dapat memperlambat proses pemasangan volume.

    Catatan

    Setelah Anda menambahkan parameter securityContext.fsgroup ke konfigurasi aplikasi, ACS secara otomatis memodifikasi kepemilikan file dalam volume saat memasang disk ke aplikasi. Waktu yang diperlukan untuk modifikasi kepemilikan bergantung pada jumlah file dalam volume. Jika ada banyak file dalam volume, proses modifikasi mungkin memakan waktu lama. Anda dapat mengatur parameter fsGroupChangePolicy dalam konfigurasi pod ke OnRootMismatch. Dengan cara ini, ACS hanya memodifikasi kepemilikan file ketika pod dijalankan untuk pertama kalinya. Saat Anda memperbarui atau membuat ulang pod setelah pembuatan, proses pemasangan volume tidak termasuk modifikasi kepemilikan. Jika pengaturan sebelumnya tidak memenuhi persyaratan bisnis Anda, kami merekomendasikan agar Anda membuat init container dan memberikan izin kepada init container untuk melakukan operasi yang relevan.

Pasang volume disk yang di-provision secara dinamis

kubectl

Langkah 1: Buat StorageClass

ACS menyediakan StorageClass default bernama alicloud-disk-topology-alltype. StorageClass ini dapat digunakan untuk menyediakan PV dari jenis-jenis berikut dalam urutan prioritas menurun: cloud_essd (ESSD), cloud_ssd (SSD standar), dan cloud_efficiency (disk ultra). Jika StorageClass default tidak memenuhi persyaratan bisnis Anda, lakukan langkah-langkah berikut untuk membuat StorageClass kustom:

  1. Hubungkan ke kluster ACS Anda. Untuk informasi lebih lanjut, lihat Dapatkan file kubeconfig kluster dan gunakan kubectl untuk terhubung ke kluster dan Gunakan kubectl di Cloud Shell untuk mengelola kluster ACS.

  2. Buat file bernama disk-sc.yaml dan salin template konten berikut ke dalam file. Modifikasi parameter dalam template berdasarkan persyaratan bisnis Anda.

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: alicloud-disk-essd
    provisioner: diskplugin.csi.alibabacloud.com
    parameters:
      type: cloud_essd
      fstype: ext4
      performanceLevel: PL1
    reclaimPolicy: Delete
    volumeBindingMode: WaitForFirstConsumer
    allowVolumeExpansion: true

    Tabel berikut menjelaskan parameter-parameter tersebut.

    Parameter

    Deskripsi

    parameters.type

    Kategori disk. Nilai valid:

    • cloud_essd_entry: ESSD Entry disk.

    • cloud_auto: ESSD AutoPL disk.

    • cloud_essd: Enterprise SSD (ESSD). Ini adalah nilai default.

    • cloud_ssd: SSD standar.

    • cloud_efficiency: disk ultra.

    Anda dapat mengatur parameter ini ke kombinasi apa pun dari nilai-nilai di atas. Misalnya, Anda dapat mengatur parameter ini ke type: cloud_efficiency, cloud_ssd, cloud_essd. Dalam hal ini, sistem mencoba membuat disk dari kategori tertentu secara berurutan. Sistem berhenti mencoba begitu disk dibuat.

    Catatan

    Anda dapat memilih kategori disk berdasarkan kebutuhan Anda untuk penagihan dan kinerja. Untuk informasi lebih lanjut, lihat Harga perangkat penyimpanan blok dan Kinerja penyimpanan blok.

    parameters.fstype

    Tipe sistem file disk. Nilai default: ext4. Nilai valid: ext3, ext4, dan xfs.

    parameters.performanceLevel

    Tingkat kinerja (PL) ESSD. Nilai default: PL1. Nilai valid: PL0, PL1, PL2, dan PL3. Untuk informasi lebih lanjut, lihat ESSD.

    provisioner

    Tipe driver. Dalam contoh ini, parameter diatur ke diskplugin.csi.alibabacloud.com, yang menunjukkan bahwa Plugin Container Storage Interface (CSI) yang disediakan oleh Alibaba Cloud digunakan.

    reclaimPolicy

    Kebijakan pengambilan kembali disk. Anda harus mengatur nilainya ke Delete, yang menunjukkan bahwa PV dan disk secara otomatis dihapus saat persistent volume claim (PVC) dihapus.

    volumeBindingMode

    Mode pengikatan volume. Kami merekomendasikan Anda menggunakan WaitForFirstConsumer jika kluster Anda diterapkan di beberapa zona.

    • WaitForFirstConsumer: Waktu tunggu sebelum volume diikat. Sistem menjadwalkan pod dan kemudian membuat volume berdasarkan informasi zona pod.

    • Immediate: Sistem membuat volume sebelum membuat pod.

    Penting

    Jika Anda menggunakan pod ACS yang dipasang dengan volume disk di kluster ACK, gunakan nodeSelector atau buat ResourcePolicy untuk menjadwalkan pod ke node virtual. Jika Anda menggunakan label pod alibabacloud.com/acs: "true" untuk menjadwalkan pod ke node virtual, StorageClass WaitForFirstConsumer tidak didukung.

    allowVolumeExpansion

    Menentukan apakah akan secara otomatis mengubah ukuran disk.

  3. Buat StorageClass.

    kubectl create -f disk-sc.yaml
  4. Periksa StorageClass.

    kubectl get sc

    Keluaran yang diharapkan:

    NAME                             PROVISIONER                       RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
    alicloud-disk-essd               diskplugin.csi.alibabacloud.com   Delete          WaitForFirstConsumer   true                   78s
    alicloud-disk-topology-alltype   diskplugin.csi.alibabacloud.com   Delete          WaitForFirstConsumer   true                   23d
    ......

Langkah 2: Buat PVC

  1. Buat file bernama disk-pvc.yaml dan salin konten berikut ke file tersebut:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: disk-pvc
    spec:
      accessModes:
      - ReadWriteOncePod
      volumeMode: Filesystem
      resources:
        requests:
          storage: 20Gi
      storageClassName: alicloud-disk-essd

    Tabel berikut menjelaskan parameter-parameter tersebut.

    Parameter

    Deskripsi

    accessModes

    Mode akses. Anda harus mengatur nilainya ke ReadWriteOncePod.

    volumeMode

    Mode volume. Nilai valid:

    • Filesystem: mode sistem file. Ini adalah nilai default.

    • Block: block gateway: mode perangkat blok.

    storage

    Tentukan kapasitas penyimpanan yang ingin Anda alokasikan ke pod. Ini juga merupakan kapasitas disk.

    storageClassName

    Nama StorageClass yang ingin Anda asosiasikan dengan PVC.

  2. Buat PVC.

    kubectl create -f disk-pvc.yaml
  3. Periksa PVC.

    kubectl get pvc

    Keluaran berikut menunjukkan bahwa tidak ada PV yang terikat ke PVC karena parameter volumeBindingMode diatur ke WaitForFirstConsumer.

    NAME       STATUS    VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS         VOLUMEATTRIBUTESCLASS   AGE
    disk-pvc   Pending                                      alicloud-disk-essd   <unset>                 7s

Langkah 3: Buat aplikasi dan pasang disk ke aplikasi

  1. Buat file bernama disk-test.yaml dan salin konten berikut ke file tersebut.

    Blok kode berikut menentukan konfigurasi StatefulSet yang menyediakan satu pod. Pod tersebut mengajukan sumber daya penyimpanan menggunakan PVC disk-pvc, yang dipasang ke jalur /data pod.

    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: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest
            ports:
            - containerPort: 80
            volumeMounts:
            - name: pvc-disk
              mountPath: /data
          volumes:
            - name: pvc-disk
              persistentVolumeClaim:
                claimName: disk-pvc
  2. Buat StatefulSet dan pasang disk ke StatefulSet.

    kubectl create -f disk-test.yaml
    Penting

    Selama proses penyebaran StatefulSet, sistem secara otomatis membuat disk bayar sesuai pemakaian dan PV berdasarkan PVC dan StorageClass yang ditentukan dalam konfigurasi StatefulSet.

  3. Periksa apakah pod yang disediakan oleh StatefulSet telah diterapkan.

    kubectl get pod | grep disk-test

    Keluaran berikut menunjukkan bahwa satu pod diterapkan untuk StatefulSet.

    disk-test-0   1/1     Running   0          52s
  4. Periksa PVC.

    kubectl get pvc

    Keluaran berikut menunjukkan bahwa PV tipe disk secara otomatis dibuat dan terikat ke PVC.

    NAME       STATUS   VOLUME                   CAPACITY   ACCESS MODES   STORAGECLASS         VOLUMEATTRIBUTESCLASS   AGE
    disk-pvc   Bound    d-uf698s3h14isyj6b****   20Gi       RWOP           alicloud-disk-essd   <unset>                 111s
  5. Lihat file di jalur pemasangan untuk memeriksa apakah disk telah dipasang.

    kubectl exec disk-test-0 -- df | grep data

    Keluaran yang diharapkan:

    /dev/vdb        20466256      24  20449848   1% /data

Konsol

Langkah 1: Buat StorageClass

ACS menyediakan StorageClass default bernama alicloud-disk-topology-alltype. StorageClass ini dapat digunakan untuk menyediakan PV dari jenis-jenis berikut dalam urutan prioritas menurun: cloud_essd (ESSD), cloud_ssd (SSD standar), dan cloud_efficiency (disk ultra). Jika StorageClass default tidak memenuhi persyaratan bisnis Anda, lakukan langkah-langkah berikut untuk membuat StorageClass kustom:

  1. Masuk ke konsol ACS.

  2. Di halaman Clusters, klik nama kluster untuk masuk ke halaman manajemen kluster.

  3. Di panel navigasi kiri halaman manajemen kluster, pilih Volumes > StorageClasses.

  4. Buat StorageClass.

    1. Di halaman StorageClasses, klik Create.

    2. Di kotak dialog Buat, konfigurasikan parameter dan klik Create.

      Parameter

      Deskripsi

      Contoh

      Name

      Masukkan nama kustom untuk StorageClass. Nama tersebut harus memenuhi persyaratan format yang ditampilkan di konsol.

      alicloud-disk-essd

      PV Type

      Pilih Cloud Disk.

      Disk Cloud

      Parameter

      Secara default, parameter type ditambahkan. Parameter ini menentukan kategori disk. Nilai valid:

      • cloud_essd_entry: ESSD Entry disk.

      • cloud_auto: ESSD AutoPL disk.

      • cloud_essd: Enterprise SSD (ESSD). Ini adalah nilai default.

      • cloud_ssd: SSD standar.

      • cloud_efficiency: disk ultra.

      Anda dapat mengatur parameter ini ke kombinasi apa pun dari nilai-nilai di atas. Misalnya, Anda dapat mengatur parameter ini ke type: cloud_efficiency, cloud_ssd, cloud_essd. Dalam hal ini, sistem mencoba membuat disk dari kategori tertentu secara berurutan. Sistem berhenti mencoba begitu disk dibuat.

      Catatan

      Anda dapat memilih kategori disk berdasarkan kebutuhan Anda untuk penagihan dan kinerja. Untuk informasi lebih lanjut, lihat Harga perangkat penyimpanan blok dan Kinerja penyimpanan blok.

      Anda dapat menambahkan parameter berikut:

      • fstype

        Tipe sistem file dari disk. Nilai default: ext4. Nilai yang valid: ext3, ext4, dan xfs.

      • performanceLevel

        Tingkat performa (PL) dari ESSD. Nilai default: PL1. Nilai yang valid: PL0, PL1, PL2, dan PL3. Untuk informasi lebih lanjut, lihat ESSDs.

      type:cloud_essd

      Reclaim Policy

      Kebijakan pengambilan kembali disk. Anda harus mengatur nilainya ke Delete, yang menunjukkan bahwa PV dan disk secara otomatis dihapus saat persistent volume claim (PVC) dihapus.

      Delete

      Binding Mode

      Mode pengikatan volume. Kami merekomendasikan Anda menggunakan WaitForFirstConsumer jika kluster Anda diterapkan di beberapa zona.

      • WaitForFirstConsumer: Waktu tunggu sebelum volume diikat. Sistem menjadwalkan pod dan kemudian membuat volume berdasarkan informasi zona pod.

      • Immediate: Sistem membuat volume sebelum membuat pod.

      Penting

      Jika Anda menggunakan pod ACS yang dipasang dengan volume disk di kluster ACK, gunakan nodeSelector atau buat ResourcePolicy untuk menjadwalkan pod ke node virtual. Jika Anda menggunakan label pod alibabacloud.com/acs: "true" untuk menjadwalkan pod ke node virtual, StorageClass WaitForFirstConsumer tidak didukung.

      WaitForFirstConsumer

Langkah 2: Buat PVC

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

  2. Di halaman Persistent Volume Claims, klik Create.

  3. Di kotak dialog Buat PVC, konfigurasikan parameter dan klik Create.

    Parameter

    Deskripsi

    Contoh

    PVC Type

    Pilih Cloud Disk.

    Disk Cloud

    Name

    Masukkan nama kustom untuk PVC. Nama tersebut harus memenuhi persyaratan format yang ditampilkan di konsol.

    disk-pvc

    Allocation Mode

    Secara default, Use StorageClass dipilih.

    Gunakan StorageClass

    Existing Storage Class

    Pilih StorageClass yang ingin Anda asosiasikan dengan PVC.

    alicloud-disk-essd

    Capacity

    Tentukan kapasitas penyimpanan yang ingin Anda alokasikan ke pod. Ini juga merupakan kapasitas disk.

    20Gi

    Access Mode

    Anda harus memilih ReadWriteOnce, yang menunjukkan bahwa volume hanya dipasang ke satu pod dalam mode baca-tulis.

    ReadWriteOnce

    Setelah Anda membuat PVC, Anda dapat melihat PVC di halaman Persistent Volume Claims. PVC berada dalam status Pending dan tidak ada PV yang dipasang ke PVC karena mode pengikatan WaitForFirstConsumer ditentukan dalam StorageClass yang terkait dengan PVC.

Langkah 3: Buat aplikasi dan pasang disk ke aplikasi

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

  2. Di sudut kanan atas halaman StatefulSets, klik Create from Image.

  3. Konfigurasikan parameter StatefulSet dan klik Create.

    Tabel berikut menjelaskan beberapa parameter. Gunakan nilai default untuk parameter lainnya. Untuk informasi lebih lanjut, lihat Gunakan StatefulSet untuk membuat aplikasi stateful.

    Halaman Wizard

    Parameter

    Deskripsi

    Contoh

    Basic Information

    Name

    Masukkan nama kustom untuk StatefulSet. Nama tersebut harus memenuhi persyaratan format yang ditampilkan di konsol.

    disk-test

    Replicas

    Jumlah replika pod yang disediakan oleh StatefulSet.

    1

    Container

    Image Name

    Alamat gambar yang digunakan untuk menerapkan aplikasi.

    registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest

    Required Resources

    Tentukan jumlah vCore dan jumlah memori yang diperlukan oleh aplikasi.

    0,25 vCore dan 0,5 GiB memori

    Volume

    Klik Add PVC dan konfigurasikan parameter.

    • Mount Source: Pilih PVC yang Anda buat.

    • Container Path: Tentukan jalur container tempat Anda ingin memasang disk.

    • Sumber Pemasangan: disk-pvc.

    • Jalur Container: /data.

  4. Periksa apakah aplikasi telah diterapkan.

    1. Di halaman StatefulSets, klik nama aplikasi yang Anda buat.

    2. Di tab Pods, periksa apakah pod berada dalam status Running.

  5. Periksa PV dan PVC.

    • Di halaman Persistent Volumes, Anda dapat melihat PV yang dibuat oleh sistem. PV tersebut dinamai berdasarkan ID disk yang dipasang.

    • Di halaman Persistent Volume Claims, Anda dapat melihat bahwa PVC berada dalam status Bound dan PV sebelumnya terikat ke PVC.

Periksa apakah persistensi data diaktifkan berdasarkan disk

StatefulSet yang dibuat dalam contoh sebelumnya menyediakan satu pod dan disk dipasang ke pod tersebut. Jika Anda menghapus pod, sistem secara otomatis membuat ulang pod tersebut. Disk asli dipasang ke pod baru dan data masih ada di disk. Lakukan langkah-langkah berikut untuk menguji apakah data disimpan ke disk:

  1. Lihat file di jalur pemasangan untuk memeriksa apakah file di disk dapat dilihat.

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

    Keluaran yang diharapkan:

    lost+found
  2. Buat file di disk.

    kubectl exec disk-test-0 -- touch /data/test
  3. Hapus pod.

    kubectl delete pod disk-test-0
    Catatan

    Setelah Anda menghapus pod, sistem secara otomatis membuat ulang pod tersebut.

  4. Periksa pod baru.

    kubectl get pod

    Keluaran berikut menunjukkan bahwa pod baru memiliki nama yang sama dengan pod yang Anda hapus.

    NAME          READY   STATUS    RESTARTS   AGE
    disk-test-0   1/1     Running   0          27s
  5. Periksa apakah disk asli dipasang ke pod dan file masih ada di disk.

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

    Keluaran berikut menunjukkan bahwa file test masih ada di disk.

    lost+found  test