全部产品
Search
文档中心

Container Service for Kubernetes:dasar-dasar penyimpanan

更新时间:Jul 02, 2025

Topik ini memperkenalkan konsep-konsep dasar terkait penyimpanan kontainer Kubernetes. Anda dapat membaca topik ini untuk mendapatkan pemahaman menyeluruh tentang fitur penyimpanan yang disediakan oleh Container Service for Kubernetes (ACK).

Volume

File dalam kontainer disimpan sementara di disk. Membangun ulang kontainer mengakibatkan hilangnya file. Untuk mengatasi masalah ini, Kubernetes mendefinisikan sumber daya volume untuk mencegah hilangnya file akibat restart kontainer. Volume adalah saluran transfer data antara pod dan perangkat penyimpanan eksternal. Volume memungkinkan berbagi data antara kontainer dalam pod, antar pod, dan antara pod dengan lingkungan eksternal.

Volume mendefinisikan detail penyimpanan eksternal dan disematkan dalam pod. Volume pada dasarnya adalah pemetaan sumber daya ke penyimpanan eksternal dalam sistem Kubernetes. Ketika beban kerja memerlukan penyimpanan eksternal, sistem menanyakan informasi terkait dalam volume dan memasang penyimpanan eksternal.

Catatan

Volume memiliki siklus hidup yang sama dengan pod yang menggunakan volume tersebut. Anda dapat mengonfigurasi sistem untuk menghapus volume ketika pod yang menggunakan volume tersebut dihapus. Namun, apakah data dalam volume tetap ada tergantung pada jenis volume dan konfigurasinya.

ACK menyediakan jenis-jenis volume umum berikut:

Jenis

Deskripsi

Penyimpanan lokal

Anda dapat memasang penyimpanan lokal sebagai volume, seperti volume hostPath dan emptyDir. Volume ini menyimpan data pada node tertentu dalam kluster dan tidak dapat bermigrasi bersama aplikasi. Data yang disimpan menjadi tidak tersedia ketika node mati.

Penyimpanan jaringan

Anda dapat memasang penyimpanan jaringan sebagai volume, seperti Ceph, GlusterFS, NFS, dan iSCSI volume. Volume ini menyimpan data menggunakan layanan penyimpanan jarak jauh, bukan node tertentu dalam kluster. Saat menggunakan volume ini, Anda harus memasang layanan penyimpanan secara lokal.

Secret dan ConfigMap

Secret dan ConfigMap adalah volume khusus yang menyimpan informasi objek tentang kluster. Data objek dipasang sebagai volume ke node untuk digunakan oleh aplikasi.

PVC

PVC menyediakan mekanisme untuk mendefinisikan volume. PVC mengabstraksi volume menjadi objek yang independen dari pod. Informasi penyimpanan yang didefinisikan atau diasosiasikan dengan objek ini disimpan dalam volume dan dipasang untuk digunakan oleh beban kerja Kubernetes.

Instruksi Penggunaan Volume

  • Pod dapat memasang beberapa volume. Namun, kami sarankan agar Anda tidak memasang terlalu banyak volume ke pod.

  • Pod dapat memasang beberapa jenis volume.

  • Volume yang dipasang ke pod dapat dibagikan di antara kontainer dalam pod.

  • Untuk mempertahankan data, kami sarankan agar Anda menggunakan PVC dan PV.

PV dan PVC

Tidak semua volume Kubernetes bersifat persisten. Penyimpanan kontainer memerlukan layanan penyimpanan jarak jauh untuk memungkinkan persistensi data. Untuk melakukannya, Kubernetes memperkenalkan dua objek sumber daya, PV dan PVC, yang mengabstraksi detail implementasi penyimpanan dari cara penyimpanan dikonsumsi. Ini menghilangkan kebutuhan bagi pengguna untuk khawatir tentang orkestrasi infrastruktur. Saat Anda memerlukan sumber daya penyimpanan, Anda hanya perlu mengklaim persyaratan penyimpanan Anda.

PV

PV merepresentasikan volume dari jenis tertentu dan digunakan untuk mendefinisikan detail volume, seperti jenis volume, parameter volume, dan informasi tentang sumber daya penyimpanan yang dipasang. Kubernetes menggunakan informasi penyimpanan dalam PV untuk pemasangan. PV dapat diprovision secara statis atau dinamis. Jika Anda menggunakan provisioning statis, Anda dapat langsung membuat PV. Jika Anda menggunakan provisioning dinamis, Anda perlu membuat StorageClasses. csi-provisioner secara otomatis membuat PV berdasarkan StorageClasses dan memasang PV ke pod.

Catatan

PV digunakan pada tingkat kluster alih-alih tingkat node. PV memiliki siklus hidupnya sendiri, yang independen dari siklus hidup pod.

apiVersion: v1
kind: PersistentVolume
metadata:
  namespace: default
  name: pv-example
spec:
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  csi:
    driver: diskplugin.csi.alibabacloud.com
    volumeHandle: <disk ID>
  volumeMode: Filesystem

PVC

PVC merepresentasikan klaim untuk penyimpanan persisten dan digunakan untuk mendefinisikan detail permintaan penyimpanan persisten pod, seperti kapasitas volume dan izin baca/tulis. PVC mengonsumsi PV.

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-example
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 20Gi
  volumeName: pv-example

Instruksi Penggunaan PV dan PVC

PVC dan PV memiliki hubungan satu-satu. PV tidak dapat diikat ke beberapa PVC, dan PVC tidak dapat diikat ke beberapa PV. Untuk mengonfigurasi penyimpanan untuk aplikasi, Anda harus mendeklarasikan PVC. Kubernetes memilih PV yang paling sesuai dengan PVC dan mengikatnya bersama. PVC harus diikat ke PV sebelum dapat digunakan oleh pod. Daftar berikut menjelaskan persyaratan yang harus dipenuhi PV sebelum dapat diikat ke PVC:

  • VolumeMode: PV yang akan dikonsumsi harus menggunakan mode volume yang sama dengan PVC.

  • AccessMode: PV yang akan dikonsumsi harus menggunakan mode akses yang sama dengan PVC.

  • StorageClassName: Jika parameter ini didefinisikan untuk PVC, hanya PV yang memiliki parameter yang sesuai yang dapat diikat ke PVC ini.

  • LabelSelector: PV yang sesuai dipilih dari daftar PV berdasarkan pencocokan label.

  • storage: PV yang akan dikonsumsi harus memiliki kapasitas penyimpanan yang tidak kurang dari PVC.

Daftar berikut menjelaskan bidang storage dalam PV dan PVC:

  • Sistem menentukan apakah PV dapat diikat ke PVC berdasarkan nilai bidang storage mereka.

  • Saat Anda menggunakan provisioning PV dinamis berdasarkan PVC dan StorageClass, bidang storage PVC menentukan kapasitas PV dan penyimpanan backend yang sesuai (seperti disk).

  • Untuk jenis penyimpanan yang mendukung operasi resize, nilai bidang storage PVC digunakan sebagai kapasitas PV dan penyimpanan backend setelah ekspansi.

Saat data ditulis ke PV, bidang storage PVC dan PV tidak diperhitungkan. Sebaliknya, operasi penulisan bergantung pada kapasitas aktual medium penyimpanan yang mendasarinya.

Mode akses volume

Anda dapat menggunakan bidang accessModes untuk menentukan mode akses volume.

ReadWriteOnce (RWO)

Volume dapat dipasang dalam mode baca-tulis ke sebuah node. Misalnya, Anda dapat menentukan nilai ini saat memasang disk Alibaba Cloud.

ReadOnlyMany (ROX)

Volume dapat dipasang dalam mode baca-saja ke beberapa node. Misalnya, Anda dapat menentukan nilai ini saat memasang Bucket OSS (Object Storage Service).

ReadWriteMany (RWX)

Volume dapat dipasang dalam mode baca-tulis ke beberapa node. Misalnya, Anda dapat menentukan nilai ini saat memasang sistem file NAS (File Storage NAS).

Cara Memasang Volume ke Pod

Volume Provisioning Statis

Volume provisioning statis dibuat oleh administrator kluster. Anda dapat memasang disk Alibaba Cloud, sistem file NAS, dan bucket OSS sebagai volume provisioning statis.

  1. Administrator kluster mengalokasikan media penyimpanan, seperti disk atau sistem file NAS, dengan menganalisis kebutuhan penyimpanan pod dalam kluster.

  2. Administrator secara manual membuat beberapa PV terlebih dahulu berdasarkan situasi penyimpanan aktual dan mendefinisikan kapasitas penyimpanan spesifik yang dapat disediakan setiap PV. PV dapat dikonsumsi oleh PVC.

  3. Pengguna membuat PVC untuk mendeklarasikan persyaratan penyimpanan beban kerja mereka.

  4. Jika beban kerja mendefinisikan persyaratan PVC, Kubernetes mengikat PVC ke PV yang sesuai selama pembuatan pod. Dengan cara ini, pod yang dibuat oleh beban kerja dapat mengakses sumber daya penyimpanan yang dipasang.

Volume Provisioning Dinamis

Volume provisioning dinamis dibuat oleh provisioner plugin volume. Anda dapat memasang disk Alibaba Cloud, sistem file NAS, dan bucket OSS sebagai volume provisioning dinamis.

  1. Administrator kluster mengonfigurasi kolam penyimpanan backend dan memilih provisioner volume yang berbeda untuk membuat jenis volume yang berbeda. Misalnya, diskplugin.csi.alibabacloud.com mewakili provisioner untuk disk Alibaba Cloud.

  2. Administrator kluster tidak perlu secara manual mengalokasikan PV. Sebagai gantinya, administrator hanya perlu membuat StorageClass dan menunggu PVC mengonsumsi StorageClass.

  3. Pengguna membuat PVC untuk mendeklarasikan persyaratan penyimpanan pod beban kerja mereka. Pengguna harus menentukan StorageClass dalam PVC.

  4. Jika beban kerja mendefinisikan persyaratan PVC, provisioner volume secara dinamis menciptakan PV berdasarkan konfigurasi StorageClass yang terkait dengan PVC. Dengan cara ini, pod yang dibuat oleh beban kerja dapat mengakses sumber daya penyimpanan yang dipasang.

Keuntungan provisioning dinamis:

  • Volume provisioning dinamis memungkinkan Kubernetes mengotomatiskan manajemen siklus hidup PV, dengan pembuatan dan penghapusan ditangani oleh provisioner.

  • PV dibuat secara otomatis, mengurangi kompleksitas konfigurasi volume dan beban kerja administrator kluster.

  • Volume provisioning dinamis memastikan konsistensi kapasitas antara PVC dan PV yang dibuat oleh provisioner, memungkinkan perencanaan kapasitas penyimpanan yang optimal.

StorageClasses

StorageClass mendefinisikan kelas penyimpanan dan memungkinkan provisioning dinamis. Anda dapat menentukan parameter berbeda dalam StorageClass untuk mengotomatiskan pasokan dan penyesuaian sumber daya penyimpanan berdasarkan parameter tersebut. Setelah Anda menentukan bidang StorageClassName dalam PVC Anda, jika tidak ada PV yang cocok di kluster, sistem memicu provisioner yang ditentukan dalam bidang StorageClassName untuk secara otomatis membuat PV dan sumber daya penyimpanan backend yang diprovision secara dinamis berdasarkan StorageClass. Ini mengurangi beban pembuatan dan pemeliharaan PV. Contoh berikut menunjukkan cara membuat StorageClass untuk disk Alibaba Cloud. Untuk informasi lebih lanjut tentang StorageClass kustom untuk disk Alibaba Cloud, sistem file NAS, dan bucket OSS, lihat Gunakan volume disk yang diprovision secara dinamis, Gunakan volume NAS yang diprovision secara dinamis, dan Gunakan volume OSS yang diprovision secara dinamis.

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: alicloud-disk-topology-alltype
provisioner: diskplugin.csi.alibabacloud.com
parameters:
  type: cloud_auto,cloud_essd,cloud_ssd,cloud_efficiency
  fstype: ext4
  diskTags/a: b
  encrypted: "false"
  performanceLevel: PL1
  provisionedIops: "40000"
  burstingEnabled: "false"
reclaimPolicy: Delete
allowVolumeExpansion: true
volumeBindingMode: WaitForFirstConsumer  

Parameter Utama

Parameter

Deskripsi

provisioner

Penyedia sumber daya penyimpanan. Nilai valid:

  • diskplugin.csi.alibabacloud.com: menggunakan provisioner untuk disk Alibaba Cloud untuk membuat StorageClass.

  • nasplugin.csi.alibabacloud.com: menggunakan provisioner untuk sistem file NAS untuk membuat StorageClass.

  • ossplugin.csi.alibabacloud.com: menggunakan provisioner untuk bucket OSS untuk membuat StorageClass.

parameters

Parameter disk cloud.

reclaimPolicy

Kebijakan reclaim disk cloud. Nilai default: Delete. Nilai valid:

  • Delete: Saat PVC dihapus, PV dan disk cloud juga dihapus.

  • Retain: Saat PVC dihapus, PV dan disk cloud dipertahankan. Anda perlu menghapus PV dan disk cloud secara manual.

Jika Anda memiliki persyaratan tinggi untuk keamanan data, kami sarankan Anda menetapkan nilainya ke Retain untuk mencegah penghapusan tidak disengaja.

allowVolumeExpansion

Untuk mengaktifkan ekspansi volume disk otomatis, atur nilainya ke true.

volumeBindingMode

Mode pengikatan disk. Nilai default: Immediate. Nilai valid:

  • Immediate: membuat disk saat PVC yang menggunakan StorageClass dibuat. Dengan cara ini, disk dibuat dan PV diprovision sebelum Anda membuat pod yang menggunakan disk.

  • WaitForFirstConsumer: menunda pengikatan dan provisioning PV sampai pod yang menggunakan PVC dibuat. Setelah pod dijadwalkan ke node, disk dibuat di zona tempat node diterapkan dan diprovision sebagai PV. Mode ini cocok untuk kluster multi-zona.

Klik untuk melihat deskripsi WaitForFirstConsumer

Sumber daya penyimpanan tertentu, seperti disk Alibaba Cloud, tidak mendukung pemasangan lintas zona. Saat Anda memasang sumber daya penyimpanan, masalah berikut mungkin terjadi:

  • Saat Anda membuat volume di Zona A tempat sumber daya node tidak mencukupi, volume tidak dapat dipasang ke pod karena pod tidak dapat diluncurkan karena sumber daya tidak mencukupi.

  • Saat merencanakan PVC dan PV dalam kluster, administrator kluster mungkin tidak yakin tentang jumlah PV yang harus dibuat di setiap zona tempat kluster berada.

Parameter volumeBindingMode digunakan untuk menyelesaikan masalah ini. Saat volumeBindingMode diatur ke WaitForFirstConsumer, itu berarti provisioner volume tidak segera membuat PV saat menerima PVC tertunda. Sebagai gantinya, provisioner menunggu PVC dikonsumsi oleh pod sebelum menjalankan proses pembuatan PV.

Prinsip Implementasi

Saat provisioner volume menerima PVC tertunda, provisioner tidak segera membuat PV. Sebagai gantinya, provisioner menunggu PVC dikonsumsi oleh pod sebelum menjalankan proses pembuatan PV. Jika pod mengonsumsi PVC ini, scheduler memeriksa apakah PVC menggunakan mode pengikatan tertunda dan kemudian menjadwalkan pod. Setelah pod dijadwalkan, scheduled menjalankan perintah patch untuk menulis hasil penjadwalan ke metadata PVC. Kemudian, provisioner mendapatkan wilayah dan node dari hasil penjadwalan dalam PVC, dan membuat PV berdasarkan informasi tentang wilayah dan node.

StorageClass Default

Kubernetes menyediakan fitur StorageClass default. Jika PVC tidak menentukan StorageClass, StorageClass default digunakan untuk memprovision PV untuk PVC. Untuk informasi lebih lanjut, lihat StorageClass Default.

StorageClass default berlaku untuk semua PVC. Lanjutkan dengan hati-hati jika kluster Anda menggunakan PVC dari berbagai jenis penyimpanan. Misalnya, Anda ingin membuat PV untuk PVC yang mendefinisikan sistem file NAS, tetapi StorageClass default mungkin secara otomatis membuat PV disk sebagai gantinya. Oleh karena itu, kluster ACK tidak menyediakan StorageClass default. Jika Anda ingin mengonfigurasi StorageClass default, lakukan langkah-langkah berikut.

  1. Konfigurasikan StorageClass default.

    Jalankan perintah berikut untuk menetapkan StorageClass alicloud-disk-topology-alltype sebagai StorageClass default:

    Catatan

    Dalam contoh ini, StorageClass alicloud-disk-topology-alltype digunakan.

    kubectl annotate storageclass alicloud-disk-topology-alltype storageclass.kubernetes.io/is-default-class=true

    Setelah StorageClass default dikonfigurasi, alicloud-disk-topology-alltype ditandai sebagai (default).

    kubectl get sc

    Output yang diharapkan:

    NAME                                        PROVISIONER                       AGE
    alicloud-disk-topology-alltype (default)    diskplugin.csi.alibabacloud.com   96m
  2. Gunakan StorageClass Default

    1. Gunakan template berikut untuk membuat PVC tanpa menentukan StorageClass:

      apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
        name: disk-pvc
      spec:
        accessModes:
        - ReadWriteOnce
        resources:
          requests:
            storage: 20Gi

      Kluster secara otomatis membuat PV disk berdasarkan StorageClass default alicloud-disk-topology-alltype.

      kubectl get pvc

      Output yang diharapkan:

      NAME       STATUS   VOLUME                   CAPACITY   ACCESS MODES    STORAGECLASS                      AGE
      disk-pvc   Bound    d-bp18pbai447qverm****   20Gi       RWO             alicloud-disk-topology-alltype    49s

Anda juga dapat menjalankan perintah berikut untuk menonaktifkan StorageClass default:

kubectl annotate storageclass alicloud-disk-topology-alltype storageclass.kubernetes.io/is-default-class-

StorageClasses yang disediakan oleh Container Service for Kubernetes

StorageClass

Jenis Disk

Deskripsi

alicloud-disk-efficiency

Ultra disk

Disk cloud generasi sebelumnya.

alicloud-disk-ssd

SSD Standar

Disk cloud generasi sebelumnya.

alicloud-disk-essd

ESSD

Enterprise SSD (ESSD) Tingkat Performa 1 (PL1) yang dibuat oleh StorageClass default.

alicloud-disk-topology-alltype

Menyediakan opsi ketersediaan tinggi. Dalam mode ini, sistem pertama-tama mencoba membuat ESSD.

  • JJika ESSD habis atau node tidak mendukung ESSD, sistem mencoba membuat SSD standar.

  • Jika SSD standar habis atau node tidak mendukung SSD standar, sistem mencoba membuat ultra disk.

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: alicloud-disk-topology-alltype
    parameters:
      type: cloud_essd,cloud_ssd,cloud_efficiency
    provisioner: diskplugin.csi.alibabacloud.com
    reclaimPolicy: Delete
    allowVolumeExpansion: true
    volumeBindingMode: WaitForFirstConsumer

Direkomendasikan untuk skenario multi-zona

alibabacloud-cnfs-nas

Saat Anda membuat kluster, Anda dapat menggunakan StorageClass default untuk membuat volume NAS yang dikelola oleh Container Network File System (CNFS). Untuk informasi lebih lanjut, lihat Gunakan CNFS untuk mengelola volume NAS.

Digunakan untuk membuat volume NAS yang dikelola oleh CNFS.

Referensi

Untuk informasi lebih lanjut tentang solusi penyimpanan yang disediakan oleh Container Service for Kubernetes, lihat Penyimpanan.