Pasang volume disk dinamis ke aplikasi dan verifikasi persistensi datanya.
Latar Belakang
Disk adalah produk penyimpanan tingkat blok yang menggunakan mekanisme multi-replika terdistribusi untuk mencapai latensi rendah, performa tinggi, daya tahan, dan keandalan. Disk sangat cocok untuk data non-shared dengan persyaratan I/O dan latensi yang ketat. Untuk informasi lebih lanjut, lihat Ikhtisar penyimpanan.
ACS hanya mendukung pemasangan volume disk secara dinamis; pemasangan statis tidak didukung.
Prasyarat
Komponen managed-csiprovisioner telah diinstal di kluster ACS.
Buka halaman manajemen kluster ACS di Konsol ACS. Di panel navigasi sebelah kiri halaman manajemen kluster, pilih . Di tab Storage, Anda dapat memeriksa apakah managed-csiprovisioner telah diinstal.
Batasan
-
Disk merupakan penyimpanan non-shared dan hanya dapat dipasang ke satu Pod saja.
-
Disk hanya dapat dipasang ke Pod yang berada dalam zona ketersediaan yang sama.
Catatan penggunaan
-
Kami menyarankan memasang disk ke StatefulSet atau Pod mandiri, bukan ke Deployment.
CatatanKarena disk hanya dapat dipasang ke satu Pod, Anda tidak dapat mengonfigurasi volume independen untuk setiap Pod dalam Deployment. Selain itu, strategi upgrade Deployment dapat mencegah Pod baru memasang disk selama restart.
-
Disk yang dibuat secara dinamis dikenai biaya berdasarkan model pay-as-you-go.
-
Untuk mengetahui cara penagihan disk, lihat Penagihan Block Storage.
-
Untuk harga disk, lihat Block Storage Pricing.
-
-
Jika Anda mengonfigurasi
securityContext.fsgroupdalam file YAML aplikasi Anda, ACS menjalankan operasichmoddanchownsetelah pemasangan selesai, yang meningkatkan waktu pemasangan.CatatanSaat
securityContext.fsgroupdikonfigurasi, kepemilikan file dalam volume disesuaikan selama pemasangan. Bergantung pada jumlah file, hal ini dapat meningkatkan waktu startup secara signifikan. AturfsGroupChangePolicykeOnRootMismatchagar kepemilikan hanya diubah saat container pertama kali dimulai; upgrade atau rebuild Pod berikutnya tidak terpengaruh. Jika ini tidak memenuhi kebutuhan Anda, gunakan initContainer untuk menerapkan logika izin kustom.
Pasang volume disk
kubectl
Langkah 1: Buat StorageClass
ACS menyediakan StorageClass default bernama alicloud-disk-topology-alltype yang membuat persistent volume (PV) dengan mencoba tipe disk berikut secara berurutan: cloud_essd (ESSD), cloud_ssd (standard SSD), dan cloud_efficiency (ultra disk). Jika default ini tidak memenuhi kebutuhan Anda, buat StorageClass baru seperti berikut.
Hubungkan ke kluster ACS Anda. Untuk informasi lebih lanjut, lihat Dapatkan file kubeconfig kluster dan gunakan kubectl untuk menghubungkan ke kluster dan Gunakan kubectl di Cloud Shell untuk mengelola kluster ACS.
-
Simpan konten YAML berikut sebagai disk-sc.yaml. Ubah parameter sesuai penjelasan dalam tabel di bawah.
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 tersebut.
Parameter
Deskripsi
parameters.typeTipe disk. Nilai yang valid:
-
cloud_essd_entry: ESSD Entry disk -
cloud_auto: ESSD AutoPL disk -
cloud_essd(default): ESSD -
cloud_ssd: standard SSD -
cloud_efficiency: ultra disk
Anda dapat menggabungkan tipe-tipe ini. Contoh:
type: cloud_efficiency, cloud_ssd, cloud_essd. Sistem akan mencoba setiap tipe secara berurutan hingga disk berhasil dibuat.CatatanAnda dapat memilih tipe disk berdasarkan kebutuhan penagihan dan performa. Untuk informasi lebih lanjut, lihat Block Storage Pricing dan Performa block storage.
parameters.fstypeTipe sistem file. Default: ext4. Nilai yang valid:
ext3,ext4, danxfs.parameters.performanceLevelTingkat performa ESSD. Default:
PL1. Nilai yang valid:PL0,PL1,PL2, danPL3. Untuk informasi lebih lanjut, lihat ESSD.provisionerDriver penyimpanan. Tetapkan nilai ini ke
diskplugin.csi.alibabacloud.comuntuk menggunakan plugin CSI disk Alibaba Cloud.reclaimPolicyKebijakan reclaim untuk disk. Hanya
Deleteyang didukung, artinya PV dan disk dasarnya akan dihapus saat persistent volume claim (PVC) dihapus.volumeBindingModeMode binding volume. Kami merekomendasikan
WaitForFirstConsumeruntuk kluster multi-zona.-
WaitForFirstConsumer: Menunda binding volume. Pod dijadwalkan terlebih dahulu, lalu disk dibuat di zona ketersediaan Pod tersebut. -
Immediate: Membuat disk sebelum Pod dijadwalkan.
PentingJika Anda menggunakan daya komputasi ACS dalam kluster ACK dan Pod ACS perlu memasang disk, gunakan nodeSelector atau ResourcePolicy untuk menjadwalkan Pod ke node virtual. Jika Anda menjadwalkan Pod dengan menambahkan label Pod (
alibabacloud.com/acs: "true"), StorageClass dengan tipeWaitForFirstConsumertidak didukung.allowVolumeExpansionApakah ekspansi disk otomatis diizinkan.
-
-
Buat StorageClass.
kubectl create -f disk-sc.yaml -
Lihat StorageClass.
kubectl get scOutput 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
-
Simpan konten YAML berikut sebagai disk-pvc.yaml.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: disk-pvc spec: accessModes: - ReadWriteOncePod volumeMode: Filesystem resources: requests: storage: 20Gi storageClassName: alicloud-disk-essdTabel berikut menjelaskan parameter tersebut.
Parameter
Deskripsi
accessModesMode akses. Hanya ReadWriteOncePod yang didukung.
volumeModeMode volume. Nilai yang valid:
-
Filesystem(default): sistem file -
Block: perangkat blok
storageKapasitas penyimpanan yang dialokasikan ke Pod, yang menentukan ukuran disk yang akan dibuat.
storageClassNameNama StorageClass yang akan digunakan.
-
-
Buat PVC.
kubectl create -f disk-pvc.yaml -
Lihat PVC.
kubectl get pvcOutput yang diharapkan menunjukkan bahwa PVC belum terikat ke PV karena
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
-
Simpan konten YAML berikut sebagai disk-test.yaml.
YAML berikut membuat StatefulSet dengan satu Pod. Pod tersebut meminta penyimpanan melalui PVC bernama
disk-pvcdan memasang volume di/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: 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 -
Buat StatefulSet dan pasang disk.
kubectl create -f disk-test.yamlPentingSistem secara otomatis menyediakan disk pay-as-you-go dan PV yang sesuai berdasarkan konfigurasi PVC dan StorageClass.
-
Periksa status deployment Pod dalam StatefulSet.
kubectl get pod | grep disk-testOutput yang diharapkan menunjukkan satu Pod karena jumlah replika StatefulSet adalah 1.
disk-test-0 1/1 Running 0 52s -
Lihat PVC.
kubectl get pvcOutput yang diharapkan menunjukkan bahwa PVC kini terikat ke PV yang dibuat secara otomatis.
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE disk-pvc Bound d-uf698s3h14isyj6b**** 20Gi RWOP alicloud-disk-essd <unset> 111s -
Periksa path mount untuk memastikan disk telah dipasang.
kubectl exec disk-test-0 -- df | grep dataOutput yang diharapkan:
/dev/vdb 20466256 24 20449848 1% /data
Konsol
Langkah 1: Buat StorageClass
ACS menyediakan StorageClass default bernama alicloud-disk-topology-alltype yang membuat persistent volume (PV) dengan mencoba tipe disk berikut secara berurutan: cloud_essd (ESSD), cloud_ssd (standard SSD), dan cloud_efficiency (ultra disk). Jika default ini tidak memenuhi kebutuhan Anda, buat StorageClass baru seperti berikut.
Masuk ke Konsol ACS.
Di halaman Clusters, klik nama kluster untuk membuka halaman manajemen kluster.
Di panel navigasi sebelah kiri halaman manajemen kluster, pilih .
-
Buat StorageClass.
Di halaman StorageClasses, klik Create.
-
Di kotak dialog yang muncul, konfigurasi parameter lalu klik Create.
Parameter
Deskripsi
Contoh
Name
Nama StorageClass. Ikuti persyaratan format yang ditampilkan di layar.
alicloud-disk-essd
PV Type
Pilih Disk.
Disk
Parameter
Parameter default adalah
type, yang menentukan tipe disk. Nilai yang valid:-
cloud_essd_entry: ESSD Entry disk -
cloud_auto: ESSD AutoPL disk -
cloud_essd(default): ESSD -
cloud_ssd: standard SSD -
cloud_efficiency: ultra disk
Anda dapat menggabungkan tipe-tipe ini. Contoh:
type: cloud_efficiency, cloud_ssd, cloud_essd. Sistem akan mencoba setiap tipe secara berurutan hingga disk berhasil dibuat.CatatanAnda dapat memilih tipe disk berdasarkan kebutuhan penagihan dan performa. Untuk informasi lebih lanjut, lihat Block Storage Pricing dan Performa block storage.
Anda dapat menambahkan parameter berikut:
-
fstypeTipe sistem file. Default: ext4. Nilai yang valid:
ext3,ext4, danxfs. -
performanceLevelTingkat performa ESSD. Default:
PL1. Nilai yang valid:PL0,PL1,PL2, danPL3. Untuk informasi lebih lanjut, lihat ESSD.
type: cloud_essd
Reclaim Policy
Kebijakan reclaim untuk disk. Hanya
Deleteyang didukung, artinya PV dan disk dasarnya akan dihapus saat persistent volume claim (PVC) dihapus.Delete
Binding Mode
Mode binding volume. Kami merekomendasikan
WaitForFirstConsumeruntuk kluster multi-zona.-
WaitForFirstConsumer: Menunda binding volume. Pod dijadwalkan terlebih dahulu, lalu disk dibuat di zona ketersediaan Pod tersebut. -
Immediate: Membuat disk sebelum Pod dijadwalkan.
PentingJika Anda menggunakan daya komputasi ACS dalam kluster ACK dan Pod ACS perlu memasang disk, gunakan nodeSelector atau ResourcePolicy untuk menjadwalkan Pod ke node virtual. Jika Anda menjadwalkan Pod dengan menambahkan label Pod (
alibabacloud.com/acs: "true"), StorageClass dengan tipeWaitForFirstConsumertidak didukung.WaitForFirstConsumer
-
Langkah 2: Buat PVC
Di panel navigasi sebelah kiri halaman manajemen kluster, pilih .
Di halaman Persistent Volume Claims, klik Create.
-
Di kotak dialog yang muncul, konfigurasi parameter lalu klik Create.
Parameter
Deskripsi
Contoh
PVC Type
Pilih Disk.
Disk
Name
Nama PVC. Ikuti persyaratan format yang ditampilkan di layar.
disk-pvc
Allocation Mode
Secara default, Use StorageClass dipilih.
Use StorageClass
Existing Storage Class
Pilih StorageClass yang akan digunakan.
alicloud-disk-essd
Capacity
Kapasitas penyimpanan yang dialokasikan ke Pod, yang menentukan ukuran disk yang akan dibuat.
20Gi
Access Mode
Hanya ReadWriteOncePod yang didukung, artinya volume dapat dipasang sebagai read-write oleh satu Pod saja.
ReadWriteOncePod
Setelah PVC dibuat, PVC tersebut muncul di halaman Persistent Volume Claims. Karena mode binding di StorageClass adalah
WaitForFirstConsumer, PVC belum terikat ke PV dan statusnya Pending.
Langkah 3: Buat aplikasi dan pasang disk
Di panel navigasi sebelah kiri halaman manajemen kluster, pilih .
-
Di halaman StatefulSets, klik Create from Image.
-
Konfigurasi parameter untuk StatefulSet, lalu klik Create.
Atur parameter berikut dan gunakan nilai default untuk sisanya. Untuk informasi lebih lanjut, lihat Buat workload StatefulSet.
Bagian konfigurasi
Parameter
Deskripsi
Contoh
Basic Information
Application Name
Nama StatefulSet. Ikuti persyaratan format yang ditampilkan di layar.
disk-test
Replicas:
Jumlah replika untuk StatefulSet.
1
Container
Image Name
Alamat gambar kontainer untuk aplikasi.
registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest
Required Resources
Sumber daya vCPU dan memori yang diminta.
0.25 vCPU, 0.5 GiB
Volume
Klik Add PVC dan konfigurasi parameter.
-
Mount Source: Pilih PVC yang telah Anda buat.
-
Container Path: Masukkan path dalam kontainer untuk memasang disk.
-
Mount Source: disk-pvc
-
Container Path: /data
-
-
Periksa status deployment aplikasi.
-
Di halaman StatefulSets, klik nama aplikasi.
-
Di tab Pods, pastikan Pod berjalan dengan baik (statusnya Running).
-
-
Periksa volume dan klaimnya.
-
Di halaman Persistent Volumes, Anda akan menemukan PV yang dibuat secara otomatis. Nama PV tersebut sesuai dengan ID disk.
-
Di halaman Persistent Volume Claims, PVC kini terikat ke PV, dan statusnya Bound.
-
Verifikasi persistensi data disk
StatefulSet yang dibuat di atas berisi satu Pod dengan disk yang dipasang. Saat Pod dihapus, Pod baru secara otomatis dibuat dan memasang kembali disk yang sama, sehingga data tetap dipertahankan. Ikuti langkah-langkah berikut untuk memverifikasi persistensi data.
-
Lihat data di disk pada path mount.
kubectl exec disk-test-0 -- ls /dataOutput yang diharapkan:
lost+found -
Buat file uji di disk.
kubectl exec disk-test-0 -- touch /data/test -
Hapus Pod.
kubectl delete pod disk-test-0CatatanSetelah Anda menghapus Pod dalam StatefulSet, sistem secara otomatis membuat Pod baru.
-
Lihat Pod yang baru dibuat.
kubectl get podOutput menunjukkan bahwa Pod baru memiliki nama yang sama dengan Pod yang dihapus, yang merupakan perilaku standar StatefulSet.
NAME READY STATUS RESTARTS AGE disk-test-0 1/1 Running 0 27s -
Verifikasi bahwa Pod baru telah memasang kembali disk dan datanya tetap ada.
kubectl exec disk-test-0 -- ls /dataOutput menunjukkan bahwa file
testyang ditulis sebelumnya masih ada di disk.lost+found test