Cocok untuk beban kerja yang intensif I/O dan sensitif terhadap latensi seperti database dan middleware, mekanisme volume dinamis menyederhanakan manajemen siklus hidup penyimpanan dengan secara otomatis membuat dan memasang cloud disk khusus untuk setiap replika aplikasi.
Cara kerja
StatefulSet menggunakan cloud disk sebagai volume penyimpanan dinamis melalui proses berikut:
Definisikan templat
Buat atau gunakan StorageClass default sebagai templat untuk membuat cloud disk secara dinamis. StorageClass menentukan parameter utama, seperti tipe disk, kinerja, dan kebijakan reclaim.Deklarasikan kebutuhan penyimpanan dalam aplikasi
Dalam StatefulSet, definisikan
volumeClaimTemplatesdan referensikan StorageClass untuk menentukan kapasitas penyimpanan dan mode akses untuk PVC.Buat dan pasang volume penyimpanan secara otomatis
Saat StatefulSet membuat Pod, sistem secara otomatis menghasilkan PVC unik untuk Pod tersebut berdasarkan templat. Komponen CSI kemudian membuat PV berdasarkan StorageClass, mengikat PV ke PVC, dan memasang cloud disk yang sesuai ke Pod.
Prasyarat
Batasan zona ketersediaan: Kecuali cloud disk ESSD zone-redundant, tipe cloud disk lain hanya dapat disambungkan ke pod di zona ketersediaan yang sama.
Batasan family tipe instans: Beberapa tipe cloud disk hanya dapat disambungkan ke family tipe instans tertentu.
Persyaratan komponen CSI: Komponen csi-plugin dan csi-provisioner harus diinstal.
Komponen CSI diinstal secara default. Periksa halaman untuk memastikan komponen tersebut masih terinstal. Kami merekomendasikan untuk meningkatkan komponen CSI ke versi terbaru.
Batasan node virtual: Untuk menggunakan cloud disk pada node virtual, kluster dan kube-scheduler Anda harus memenuhi persyaratan versi berikut.
Batasan Node Lingjun: Untuk menggunakan cloud disk pada Node Lingjun, Anda harus memenuhi persyaratan berikut.
Langkah 1: Pilih StorageClass
ACK menyediakan beberapa StorageClass default. Karena StorageClass tidak dapat dimodifikasi setelah dibuat, Anda dapat membuat StorageClass secara manual jika konfigurasi default tidak memenuhi kebutuhan Anda.
StorageClass Bawaan
Anda dapat memilih salah satu StorageClass default berikut dan mereferensikan namanya di field storageClassName aplikasi Anda.
Nama kelas penyimpanan | Tipe disk yang disediakan |
| StorageClass ini menjadwalkan Pod sebelum membuat Cloud Disk, sehingga mencegah kegagalan pemasangan akibat ketidaksesuaian zona ketersediaan ( |
| Menyediakan ESSD. Tingkat kinerja default adalah PL1, dan kapasitas disk minimum adalah 20 GiB. Penting ESSD di Cloud Box hanya mendukung tingkat kinerja PL0. Anda harus membuat StorageClass secara manual dan menentukan |
| Menyediakan SSD cloud disk. Kapasitas disk minimum adalah 20 GiB. |
| Menyediakan ultra disk. Kapasitas disk minimum adalah 20 GiB. |
Anda dapat menjalankan kubectl describe sc <nama-storageclass> untuk melihat konfigurasi detail StorageClass.Pembuatan manual
Kubectl
Buat file bernama
disk-sc.yaml.Contoh berikut menunjukkan StorageClass yang menggunakan
volumeBindingMode: WaitForFirstConsumeruntuk menunda pengikatan PV.apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: # Nama StorageClass name: alicloud-disk-wait-for-first-consumer # Provisioner. Ini harus diatur ke nilai ini saat menggunakan plug-in Alibaba Cloud Disk CSI. provisioner: diskplugin.csi.alibabacloud.com parameters: # Tipe Cloud Disk. Sistem mencoba membuat disk dalam urutan yang ditentukan. type: cloud_auto,cloud_essd,cloud_ssd # Tipe sistem file fstype: ext4 diskTags: "a:b,b:c" encrypted: "false" # Tingkat kinerja untuk ESSD performanceLevel: PL1 provisionedIops: "40000" burstingEnabled: "false" # Mode pengikatan volume. WaitForFirstConsumer direkomendasikan untuk skenario multi-AZ. volumeBindingMode: WaitForFirstConsumer # Kebijakan reclaim reclaimPolicy: Retain # Apakah ekspansi volume diizinkan allowVolumeExpansion: true # Pembatasan topologi: Membatasi pembuatan disk hanya pada zona ketersediaan tertentu. allowedTopologies: - matchLabelExpressions: - key: topology.diskplugin.csi.alibabacloud.com/zone values: # Ganti dengan zona ketersediaan Anda - cn-hangzhou-i - cn-hangzhou-kTabel berikut menjelaskan parameter utama.
Parameter
Deskripsi
provisionerProvisioner. Parameter wajib ini harus diatur ke
diskplugin.csi.alibabacloud.comsaat menggunakan plug-in Alibaba Cloud Disk CSI.parameterstypeTipe Cloud Disk. Ini adalah parameter wajib. Nilai yang valid meliputi:
cloud_essd(default): ESSDcloud_auto: ESSD AutoPL cloud diskcloud_essd_entry: Ikhtisar Penyimpanan Blokcloud_ssd: SSD cloud diskcloud_efficiency: ultra diskelastic_ephemeral_disk_standard: Standard elastic ephemeral diskelastic_ephemeral_disk_premium: Premium elastic ephemeral diskcloud_regional_disk_auto: ESSD Co-located Redundant Disk
Anda dapat menentukan daftar tipe yang dipisahkan koma, misalnya,
type: cloud_ssd,cloud_essd,cloud_auto. Sistem mencoba membuat disk dalam urutan yang ditentukan. Tipe disk akhir bergantung pada faktor seperti tipe instans node dan tipe disk yang tersedia di zona ketersediaan.resourceGroupIdKelompok sumber daya untuk Cloud Disk. Default:
"".regionIdWilayah Cloud Disk, yang harus sama dengan wilayah kluster.
fstypeSistem file untuk Cloud Disk. Nilai yang valid:
ext4(default) danxfs.mkfsOptionsOpsi pemformatan untuk Cloud Disk, misalnya,
mkfsOptions: "-O project,quota".diskTagsTag untuk Cloud Disk. Misalnya,
diskTags: "a:b,b:c". Anda juga dapat menggunakan formatdiskTags/a: b. Memerlukan versi komponen CSI v1.30.3 atau lebih baru.encryptedMenentukan apakah Cloud Disk dienkripsi. Default:
false.performanceLevelTingkat kinerja ESSD. Nilai yang valid adalah
PL0,PL1(default),PL2, danPL3.Saat digunakan dengan Cloud Box, ini harus diatur ke
PL0.volumeExpandAutoSnapshot(Tidak digunakan lagi)Tidak digunakan lagi sejak versi CSI 1.31.4.
provisionedIopsMengatur IOPS yang disediakan untuk ESSD AutoPL cloud disk.
burstingEnabledUntuk ESSD AutoPL cloud disk, menentukan apakah akan mengaktifkan burst. Default:
false.multiAttachMenentukan apakah akan mengaktifkan fitur multi-attach untuk Cloud Disk. Default:
false.volumeBindingModeMode pengikatan volume untuk Cloud Disk. Nilai yang valid:
Immediate(default): Membuat Cloud Disk sebelum membuat Pod.WaitForFirstConsumer: Menunda pengikatan. Menjadwalkan Pod terlebih dahulu, lalu membuat Cloud Disk di zona ketersediaan Pod.Pada kluster multi-AZ,
WaitForFirstConsumerdirekomendasikan untuk mencegah kegagalan pemasangan yang dapat terjadi jika Cloud Disk dan nodenya berada di zona ketersediaan yang berbeda.Jika Anda perlu menjadwalkan Pod ke node virtual, penggunaan StorageClass bertipe
WaitForFirstConsumertidak didukung dengan metode penjadwalan tertentu atau anotasi spesifik. Untuk informasi selengkapnya, lihat Apa yang harus saya lakukan jika PVC tetap dalam status Pending saat Pod dengan Cloud Disk dijadwalkan ke node virtual?.
reclaimPolicyKebijakan reclaim untuk Cloud Disk.
Delete(default): Saat PVC dihapus, PV dan Cloud Disk yang mendasarinya juga dihapus.Retain: Saat PVC dihapus, PV dan Cloud Disk yang mendasarinya dipertahankan.Untuk mencegah kehilangan data secara tidak sengaja, kami merekomendasikan menggunakan kebijakan
Retain.
allowVolumeExpansionJika diatur ke
true, mengizinkan ekspansi online Cloud Disk.allowedTopologiesMembatasi Cloud Disk hanya disediakan di domain topologi tertentu.
key: Label domain topologi. Nilai yang didukung meliputi:topology.diskplugin.csi.alibabacloud.com/zone:keytopologi khusus yang disediakan oleh plug-in Alibaba Cloud CSI.alibabacloud.com/ecs-instance-id: Saat menggunakan elastic ephemeral disk, Anda dapat menggunakan ini untuk menentukan node.
values: Daftar yang berisi ID zona ketersediaan atau node.
Buat StorageClass.
kubectl create -f disk-sc.yamlVerifikasi StorageClass.
kubectl get scOutput menunjukkan bahwa StorageClass dibuat dengan mode pengikatan
WaitForFirstConsumer.NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE alicloud-disk-wait-for-first-consumer diskplugin.csi.alibabacloud.com Retain WaitForFirstConsumer true 10s
Konsol
-
Pada halaman Kluster ACK, klik nama kluster Anda. Di panel navigasi kiri, klik .
Klik Create, pilih Cloud Disk sebagai Tipe Volume, konfigurasikan parameter, lalu klik Create.
Parameter
Deskripsi
Parameters
Parameter default:
type.Tipe Cloud Disk. Ini adalah parameter wajib. Nilai yang valid meliputi:
cloud_essd(default): ESSDcloud_auto: ESSD AutoPL cloud diskcloud_essd_entry: Ikhtisar Penyimpanan Blokcloud_ssd: SSD cloud diskcloud_efficiency: ultra diskelastic_ephemeral_disk_standard: Standard elastic ephemeral diskelastic_ephemeral_disk_premium: Premium elastic ephemeral diskcloud_regional_disk_auto: ESSD Co-located Redundant Disk
Anda dapat menentukan daftar tipe yang dipisahkan koma, misalnya,
type: cloud_ssd,cloud_essd,cloud_auto. Sistem mencoba membuat disk dalam urutan yang ditentukan. Tipe disk akhir bergantung pada faktor seperti tipe instans node dan tipe disk yang tersedia di zona ketersediaan.
Reclaim policy
Kebijakan reclaim untuk Cloud Disk.
Delete(default): Saat PVC dihapus, PV dan Cloud Disk yang mendasarinya juga dihapus.Retain: Saat PVC dihapus, PV dan Cloud Disk yang mendasarinya dipertahankan.Untuk mencegah kehilangan data secara tidak sengaja, kami merekomendasikan menggunakan kebijakan
Retain.
Binding Mode
Mode pengikatan volume untuk Cloud Disk. Nilai yang valid:
Immediate(default): Membuat Cloud Disk sebelum membuat Pod.WaitForFirstConsumer: Menunda pengikatan. Menjadwalkan Pod terlebih dahulu, lalu membuat Cloud Disk di zona ketersediaan Pod.Pada kluster multi-AZ,
WaitForFirstConsumerdirekomendasikan untuk mencegah kegagalan pemasangan yang dapat terjadi jika Cloud Disk dan nodenya berada di zona ketersediaan yang berbeda.Jika Anda perlu menjadwalkan Pod ke node virtual, penggunaan StorageClass bertipe
WaitForFirstConsumertidak didukung dengan metode penjadwalan tertentu atau anotasi spesifik. Untuk informasi selengkapnya, lihat Apa yang harus saya lakukan jika PVC tetap dalam status Pending saat Pod dengan Cloud Disk dijadwalkan ke node virtual?.
StorageClass baru muncul di halaman StorageClasses.
Langkah 2: Buat aplikasi dengan cloud disk
Bagian ini menggunakan StatefulSet sebagai contoh untuk menunjukkan cara memasang volume Cloud Disk.
Cloud Disk menyediakan penyimpanan non-shared dan, kecuali multi-attach diaktifkan, hanya dapat dipasang ke satu Pod dalam satu waktu. Berbagi PVC dalam Deployment multi-replika dapat mencegah Pod baru berjalan jika Cloud Disk sudah 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.
Buat file bernama
statefulset.yaml.Contoh berikut membuat StatefulSet dengan dua Pod. Menggunakan
volumeClaimTemplatesuntuk secara otomatis membuat dan mengikat volume persisten independen untuk setiap Pod.apiVersion: apps/v1 kind: StatefulSet metadata: name: web spec: serviceName: "nginx" replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: # Kami merekomendasikan mengonfigurasi securityContext berikut untuk mengoptimalkan kinerja pemasangan. securityContext: fsGroup: 1000 fsGroupChangePolicy: "OnRootMismatch" containers: - name: nginx image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6 ports: - containerPort: 80 volumeMounts: # Pasang volume data ke direktori /data di kontainer. # Nama harus sesuai dengan metadata.name yang didefinisikan di volumeClaimTemplates. - name: pvc-disk mountPath: /data # Definisikan templat PVC. volumeClaimTemplates: - metadata: name: pvc-disk spec: # Mode akses accessModes: [ "ReadWriteOnce" ] # Asosiasikan dengan StorageClass yang dibuat sebelumnya. storageClassName: "alicloud-disk-wait-for-first-consumer" resources: requests: # Kapasitas penyimpanan yang diminta, yaitu ukuran Cloud Disk. storage: 20GiPentingSaat Anda mengonfigurasi
securityContext.fsgroup, kubelet secara rekursif mengubah izin file (chmod/chown) saat memasang volume. Hal ini dapat secara signifikan meningkatkan waktu pemasangan untuk volume dengan banyak file.Untuk kluster versi 1.20 atau lebih baru, kami merekomendasikan mengatur
fsGroupChangePolicykeOnRootMismatch. Ini mengoptimalkan kinerja pemasangan dengan hanya melakukan perubahan izin rekursif saat volume dipasang pertama kali dan izin direktori root tidak sesuai. Jika kinerja tetap menjadi masalah atau Anda memerlukan kontrol izin yang lebih granular, gunakaninitContaineruntuk mengelola izin sebelum kontainer aplikasi dimulai.Buat StatefulSet.
kubectl create -f statefulset.yamlVerifikasi bahwa Pod sedang berjalan.
kubectl get pod -l app=nginxVerifikasi bahwa Cloud Disk telah dipasang.
Dalam contoh ini, Pod bernama
web-1. Ganti dengan nama Pod aktual Anda.kubectl exec web-1 -- df -h /dataOutput yang diharapkan:
Filesystem Size Used Avail Use% Mounted on /dev/vdb 20G 24K 20G 1% /data
Langkah 3: Verifikasi penyimpanan persisten
Untuk memverifikasi bahwa data pada cloud disk bersifat persisten, Anda akan menulis data ke disk, menghapus Pod, lalu memeriksa apakah data tetap ada setelah Pod dibuat ulang.
Tulis data uji ke Pod.
Di Pod
web-1, buat file bernamatestdi direktori/data, yaitu titik pemasangan cloud disk.kubectl exec web-1 -- touch /data/test kubectl exec web-1 -- ls /dataOutput yang diharapkan:
lost+found testSimulasikan kegagalan Pod dengan menghapus Pod.
kubectl delete pod web-1Jalankan
kubectl get pod -l app=nginxlagi. Pod baru dengan nama yang sama,web-1, dibuat secara otomatis.Verifikasi data di Pod baru.
Di Pod
web-1yang baru, periksa kembali direktori/data.kubectl exec web-1 -- ls /dataOutput menegaskan bahwa file
testmasih ada. Hal ini menunjukkan bahwa penyimpanan persisten mempertahankan data, bahkan setelah Pod dihapus dan dibuat ulang.lost+found test
Penerapan produksi
Ketersediaan tinggi
Pemilihan cloud disk
Evaluasi faktor-faktor seperti kinerja, penagihan, zona ketersediaan, dan family tipe instans untuk memastikan pod Anda dijadwalkan ke node yang kompatibel.
Saat memilih tipe cloud disk, perhatikan bahwa SSD cloud disk dan Ultra cloud disk sedang dihentikan penggunaannya. Kami merekomendasikan menggunakan cloud disk ESSD PL0 atau cloud disk ESSD Entry untuk menggantikan Ultra cloud disk, dan cloud disk ESSD AutoPL untuk menggantikan SSD cloud disk.
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 dan backup data
Mencegah penghapusan data secara tidak sengaja:
Untuk mencegah kehilangan data, atur
reclaimPolicyStorageClass keRetain. Hal ini memastikan cloud disk yang mendasarinya dipertahankan saat PVC dihapus, yang menyederhanakan pemulihan data.Backup berkala
Volume dinamis menyederhanakan penyediaan resource tetapi tidak menggantikan backup data. Untuk workload kritis, gunakan Backup Center untuk mencadangkan dan memulihkan data Anda.
Enkripsi saat diam: Untuk aplikasi yang menangani data sensitif, konfigurasikan
encrypted: "true"di StorageClass untuk mengenkripsi cloud disk.
Optimasi kinerja dan biaya
Attach paralel
Untuk mempercepat startup pod, gunakan attach paralel untuk cloud disk.
Ubah ukuran volume online
Atur
allowVolumeExpansion: truedi StorageClass untuk mengubah ukuran volume penyimpanan cloud disk secara online saat kebutuhan penyimpanan Anda bertambah.Pemantauan dan peringatan penyimpanan
Konfigurasikan peringatan berdasarkan pemantauan penyimpanan kontainer untuk segera mendeteksi anomali volume penyimpanan atau bottleneck kinerja.
Penagihan
Cloud disk yang disediakan secara dinamis oleh StorageClass menggunakan penagihan bayar sesuai penggunaan. Untuk informasi selengkapnya, lihat penagihan penyimpanan blok dan harga penyimpanan blok.
Bersihkan resource
Untuk mencegah biaya tak terduga dan memastikan keamanan data, ikuti langkah-langkah berikut untuk melepaskan resource yang tidak digunakan.
Hapus workload
Aksi: Hapus semua aplikasi yang menggunakan PersistentVolumeClaim (PVC) terkait, seperti Deployment dan StatefulSet. Hal ini menghentikan Pod yang berjalan dan melepas volume yang terkait.
Contoh perintah:
kubectl delete deployment <nama-deployment-anda>
Hapus PVC
Aksi: Hapus PVC yang terkait dengan aplikasi Anda.
reclaimPolicyStorageClass menentukan pelepasan PersistentVolume (PV) dan cloud disk yang mendasarinya.Delete: Jika kebijakannyaDelete, menghapus PVC juga akan menghapus PV yang terikat dan cloud disk yang mendasarinya. Tindakan ini tidak dapat dikembalikan. Lakukan dengan hati-hati.Untuk mencegah kehilangan data secara tidak sengaja, Anda dapat membuat kebijakan snapshot otomatis untuk mencadangkan cloud disk sebelum penghapusan.
Retain: Jika kebijakannyaRetain, menghapus PVC mengubah status PV yang terikat menjadiReleased, tetapi objek PV dan cloud disk yang mendasarinya dipertahankan. Jika Anda tidak lagi memerlukan cloud disk dan datanya, ikuti petunjuk di Lepaskan cloud disk untuk menghapusnya. Tindakan ini tidak dapat dikembalikan. Lakukan dengan hati-hati.
Contoh perintah:
kubectl delete pvc <nama-pvc-anda>
Hapus definisi resource penyimpanan Kubernetes. Tindakan ini hanya menghapus definisi resource dari kluster dan tidak menghapus cloud disk yang mendasarinya.
Hapus PV
Aksi: Anda dapat menghapus secara manual definisi resource untuk PV dalam status
Released.Contoh perintah:
kubectl delete pv <nama-pv-anda>
Hapus StorageClass
Aksi: Jika Anda tidak lagi memerlukan tipe penyimpanan ini, Anda dapat menghapus StorageClass yang sesuai.
Contoh perintah:
kubectl delete sc <nama-storageclass-anda>
FAQ
PVC macet dalam status Pending saat dijadwalkan ke node virtual
Masalah ini dapat terjadi jika Anda menggunakan StorageClass yang tidak mendukung penjadwalan ke node virtual. Saat pod dijadwalkan ke node virtual menggunakan label atau anotasi tertentu, Anda tidak dapat menggunakan StorageClass yang dikonfigurasi dengan volumeBindingMode: WaitForFirstConsumer.
Alasan:
Mode WaitForFirstConsumer mengandalkan kube-scheduler untuk memilih node fisik untuk Pod. Pemilihan ini menentukan zona ketersediaan, dan cloud disk kemudian dibuat di zona ketersediaan tersebut. Namun, mekanisme penjadwalan untuk node virtual tidak mengikuti proses ini. Hal ini mencegah CSI mendapatkan informasi zona ketersediaan, yang pada gilirannya mencegah PV dibuat, sehingga PVC tetap dalam status Pending.Jika Anda mengalami masalah ini, periksa apakah pod atau namespace-nya memiliki konfigurasi berikut:
Label:
alibabacloud.com/eci: "true": Menjadwalkan pod untuk berjalan di ECI.alibabacloud.com/acs: "true": Menjadwalkan pod ke pod ACS.
Node pinning:
Mengatur
spec.nodeNameke nama node dengan awalanvirtual-kubeletmengikat pod ke node tersebut.
Anotasi:
k8s.aliyun.com/eci-vswitch: Menentukan vSwitch untuk pod ECI.k8s.aliyun.com/eci-fail-strategy: "fail-fast": Mengatur strategi kegagalan untuk pod ECI kefail-fast.
Pasang cloud disk untuk pod tunggal atau deployment replika tunggal
Untuk aplikasi sederhana yang tidak memerlukan penskalaan multi-replika atau identifier jaringan stabil, Anda dapat membuat PersistentVolumeClaim secara manual dan memasangnya ke pod atau Deployment untuk penyimpanan persisten.
Alur kerjanya sebagai berikut: Pilih StorageClass -> Buat PersistentVolumeClaim -> Pasang PersistentVolumeClaim di aplikasi Anda.
Buat PersistentVolumeClaim untuk meminta resource penyimpanan.
kubectl
Buat file bernama
disk-pvc.yaml.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: disk-pvc spec: # Mode akses accessModes: - ReadWriteOnce volumeMode: Filesystem resources: requests: # Kapasitas penyimpanan yang diminta, yaitu ukuran cloud disk storage: 20Gi # Asosiasikan dengan StorageClass yang dibuat sebelumnya storageClassName: alicloud-disk-topology-alltypeTabel berikut menjelaskan parameter.
Parameter
Deskripsi
accessModesMode akses volume. Nilai yang valid adalah
ReadWriteOnce,ReadOnlyMany, danReadWriteMany. Mode akses yang didukung bergantung pada pengaturanmultiAttachdi StorageClass dan pengaturanvolumeModedi PersistentVolumeClaim.multiAttachmenentukan apakah akan mengaktifkan multi-attach cloud disk. Nilai default adalahfalse, yang berarti fitur ini dinonaktifkan.Saat
multiAttachadalahfalsedanvolumeModediatur ke nilai apa pun, satu-satunya mode akses yang didukung adalahReadWriteOnce.Saat
multiAttachadalahtruedanvolumeModeadalahFilesystem, mode akses yang didukung adalahReadWriteOncedanReadOnlyMany.Saat
multiAttachdiatur ketruedanvolumeModediatur keBlock, ketiga mode akses didukung.
PentingDalam skenario ini, mode akses biasanya
ReadWriteOnce(RWO), yang berarti hanya dapat dipasang oleh satu Pod dalam satu waktu. Oleh karena itu, jumlah replika Deployment tidak boleh lebih dari 1. Jika Anda mencoba menskalakan, Pod baru akan tetap dalam statusPendingkarena tidak dapat memasang cloud disk yang sudah digunakan.volumeModeMode volume. Nilai yang valid:
Filesystem(default): Volume diformat dan dipasang sebagai direktori.Block: Volume disediakan ke pod sebagai perangkat blok mentah yang tidak diformat.
storageKapasitas penyimpanan yang diminta. Tipe cloud disk berbeda memiliki rentang kapasitas berbeda. Pastikan nilai
storageberada dalam batas kapasitas tipe cloud disk yang sesuai dengan StorageClass yang direferensikan untuk mencegah kegagalan pembuatan cloud disk.storageClassNameNama StorageClass yang akan digunakan untuk klaim ini.
Buat PersistentVolumeClaim.
kubectl create -f disk-pvc.yamlPeriksa PersistentVolumeClaim.
kubectl get pvcDalam output, karena StorageClass menggunakan mode
WaitForFirstConsumer, PVC berada dalam statusPendinghingga Pod pertama yang menggunakannya berhasil dijadwalkan.NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE disk-pvc Pending alicloud-disk-wait-for-first-consumer <unset> 14s
Konsol
Di panel navigasi kiri halaman manajemen kluster, pilih .
Di halaman Persistent Volume Claims, klik Create. Pilih Cloud Disk sebagai PVC Type dan konfigurasikan parameter sesuai petunjuk.
Parameter
Deskripsi
Allocation Mode
Pilih Use StorageClass.
Existing Storage Class
Pilih StorageClass default atau yang dibuat secara manual.
Capacity
Kapasitas penyimpanan yang diminta. Tipe cloud disk berbeda memiliki rentang kapasitas berbeda. Pastikan nilai
storageberada dalam batas kapasitas tipe cloud disk yang sesuai dengan StorageClass yang direferensikan untuk mencegah kegagalan pembuatan cloud disk.Access Mode
Skenario ini hanya mendukung ReadWriteOnce, yang berarti satu pod dapat memasang volume dengan akses baca-tulis.
Setelah membuat PersistentVolumeClaim, Anda dapat melihatnya di halaman Persistent Volume Claims.
Pasang PersistentVolumeClaim di aplikasi Anda.
Buat file bernama
disk-deployment.yaml.Sebarkan Deployment.
kubectl create -f disk-deployment.yaml
Verifikasi hasil pemasangan.
Konfirmasi bahwa pod sedang berjalan.
kubectl get pods -l app=nginx-singleSambungkan ke pod dan verifikasi bahwa cloud disk dipasang ke direktori
/data.# Dapatkan nama pod POD_NAME=$(kubectl get pods -l app=nginx-single -o jsonpath='{.items[0].metadata.name}') # Jalankan perintah df -h pada titik pemasangan kubectl exec $POD_NAME -- df -h /dataOutput berikut menunjukkan bahwa cloud disk 20 GiB berhasil dipasang.
Filesystem Size Used Avail Use% Mounted on /dev/vdb 20G 24K 20G 1% /data
Referensi
Untuk rekomendasi mengonfigurasi ketersediaan tinggi untuk volume cloud disk dalam penyebaran multi-zona ketersediaan, lihat Rekomendasi konfigurasi ketersediaan tinggi untuk volume cloud disk.
Untuk mempelajari parameter konfigurasi workload, lihat Buat workload stateful dengan StatefulSet dan Buat workload tanpa status dengan Deployment.
Jika Anda tidak lagi memerlukan cloud disk dan ingin menghentikan penagihan, Anda dapat Melepaskan cloud disk. Melepaskan disk akan menghapusnya secara permanen beserta semua datanya.
Jika Anda mengalami masalah saat menggunakan volume cloud disk, lihat FAQ volume cloud disk.
Jika kluster Anda masih menggunakan komponen FlexVolume yang sudah tidak digunakan, lihat Migrasi dari FlexVolume ke CSI.
