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.
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.
Buka halaman manajemen kluster ACS di konsol ACS. Di panel navigasi kiri halaman manajemen kluster, pilih . 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.
CatatanSebuah 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.
Untuk informasi lebih lanjut tentang aturan penagihan disk, lihat Perangkat Penyimpanan Blok.
Untuk informasi lebih lanjut tentang harga disk, lihat Harga Perangkat Penyimpanan Blok.
Saat Anda memasang volume disk yang di-provision secara dinamis ke aplikasi, jika konfigurasi aplikasi mencakup parameter
securityContext.fsgroup, ACS secara otomatis menjalankan perintahchmoddanchownsetelah volume dipasang, yang dapat memperlambat proses pemasangan volume.CatatanSetelah Anda menambahkan parameter
securityContext.fsgroupke 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 parameterfsGroupChangePolicydalam konfigurasi pod keOnRootMismatch. 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:
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.
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: trueTabel berikut menjelaskan parameter-parameter tersebut.
Parameter
Deskripsi
parameters.typeKategori 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.CatatanAnda 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.fstypeTipe sistem file disk. Nilai default: ext4. Nilai valid:
ext3,ext4, danxfs.parameters.performanceLevelTingkat kinerja (PL) ESSD. Nilai default:
PL1. Nilai valid:PL0,PL1,PL2, danPL3. Untuk informasi lebih lanjut, lihat ESSD.provisionerTipe 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.reclaimPolicyKebijakan pengambilan kembali disk. Anda harus mengatur nilainya ke
Delete, yang menunjukkan bahwa PV dan disk secara otomatis dihapus saat persistent volume claim (PVC) dihapus.volumeBindingModeMode pengikatan volume. Kami merekomendasikan Anda menggunakan
WaitForFirstConsumerjika 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.
PentingJika 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, StorageClassWaitForFirstConsumertidak didukung.allowVolumeExpansionMenentukan apakah akan secara otomatis mengubah ukuran disk.
Buat StorageClass.
kubectl create -f disk-sc.yamlPeriksa StorageClass.
kubectl get scKeluaran 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
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-essdTabel berikut menjelaskan parameter-parameter tersebut.
Parameter
Deskripsi
accessModesMode akses. Anda harus mengatur nilainya ke ReadWriteOncePod.
volumeModeMode volume. Nilai valid:
Filesystem: mode sistem file. Ini adalah nilai default.Block: block gateway: mode perangkat blok.
storageTentukan kapasitas penyimpanan yang ingin Anda alokasikan ke pod. Ini juga merupakan kapasitas disk.
storageClassNameNama StorageClass yang ingin Anda asosiasikan dengan PVC.
Buat PVC.
kubectl create -f disk-pvc.yamlPeriksa PVC.
kubectl get pvcKeluaran berikut menunjukkan bahwa tidak ada PV yang terikat ke PVC karena parameter
volumeBindingModediatur keWaitForFirstConsumer.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
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/datapod.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-pvcBuat StatefulSet dan pasang disk ke StatefulSet.
kubectl create -f disk-test.yamlPentingSelama proses penyebaran StatefulSet, sistem secara otomatis membuat disk bayar sesuai pemakaian dan PV berdasarkan PVC dan StorageClass yang ditentukan dalam konfigurasi StatefulSet.
Periksa apakah pod yang disediakan oleh StatefulSet telah diterapkan.
kubectl get pod | grep disk-testKeluaran berikut menunjukkan bahwa satu pod diterapkan untuk StatefulSet.
disk-test-0 1/1 Running 0 52sPeriksa PVC.
kubectl get pvcKeluaran 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> 111sLihat file di jalur pemasangan untuk memeriksa apakah disk telah dipasang.
kubectl exec disk-test-0 -- df | grep dataKeluaran 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:
Masuk ke konsol ACS.
Di halaman Clusters, klik nama kluster untuk masuk ke halaman manajemen kluster.
Di panel navigasi kiri halaman manajemen kluster, pilih .
Buat StorageClass.
Di halaman StorageClasses, klik Create.
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
typeditambahkan. 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.CatatanAnda 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:
fstypeTipe sistem file dari disk. Nilai default: ext4. Nilai yang valid:
ext3,ext4, danxfs.performanceLevelTingkat performa (PL) dari ESSD. Nilai default:
PL1. Nilai yang valid:PL0,PL1,PL2, danPL3. 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
WaitForFirstConsumerjika 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.
PentingJika 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, StorageClassWaitForFirstConsumertidak didukung.WaitForFirstConsumer
Langkah 2: Buat PVC
Di panel navigasi kiri halaman manajemen kluster, pilih .
Di halaman Persistent Volume Claims, klik Create.
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
WaitForFirstConsumerditentukan dalam StorageClass yang terkait dengan PVC.
Langkah 3: Buat aplikasi dan pasang disk ke aplikasi
Di panel navigasi kiri halaman manajemen kluster, pilih .
Di sudut kanan atas halaman StatefulSets, klik Create from Image.
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.
Periksa apakah aplikasi telah diterapkan.
Di halaman StatefulSets, klik nama aplikasi yang Anda buat.
Di tab Pods, periksa apakah pod berada dalam status Running.
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:
Lihat file di jalur pemasangan untuk memeriksa apakah file di disk dapat dilihat.
kubectl exec disk-test-0 -- ls /dataKeluaran yang diharapkan:
lost+foundBuat file di disk.
kubectl exec disk-test-0 -- touch /data/testHapus pod.
kubectl delete pod disk-test-0CatatanSetelah Anda menghapus pod, sistem secara otomatis membuat ulang pod tersebut.
Periksa pod baru.
kubectl get podKeluaran 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 27sPeriksa apakah disk asli dipasang ke pod dan file masih ada di disk.
kubectl exec disk-test-0 -- ls /dataKeluaran berikut menunjukkan bahwa file
testmasih ada di disk.lost+found test