Dalam skenario yang melibatkan penyebaran padat aplikasi stateful (seperti database) atau sejumlah besar kontainer berumur pendek (seperti integrasi berkelanjutan dan pemrosesan batch), setiap pod memerlukan banyak disk untuk menyimpan data secara persisten. Ketika banyak pod dijadwalkan ke node yang sama secara bersamaan, metode pemasangan seri default meningkatkan waktu startup pod. Untuk mengatasi masalah ini, Anda dapat mengaktifkan fitur pemasangan disk paralel.
Prasyarat
Klaster ACK dikelola telah dibuat. Versi Kubernetes klaster adalah 1.26 atau lebih baru. Versi komponen csi-plugin dan csi-provisioner adalah 1.30.4 atau lebih baru. Untuk informasi lebih lanjut, lihat csi-plugin dan csi-provisioner.
CLI Alibaba Cloud telah terinstal dan dikonfigurasi. Untuk informasi lebih lanjut, lihat Instal CLI Alibaba Cloud.
Catatan penggunaan
Anda hanya dapat mengaktifkan fitur pemasangan paralel untuk disk yang memiliki nomor seri. Untuk informasi lebih lanjut tentang cara memeriksa nomor seri disk, lihat Kueri Nomor Seri Perangkat Penyimpanan Blok.
Disk yang dibuat sebelum 10 Juni 2020 tidak memiliki nomor seri yang dapat dikenali. Jika Anda mengaktifkan fitur pemasangan paralel untuk disk-disk tersebut, kegagalan pemasangan akan terjadi.
Ketika beberapa disk dilepas dari node yang sama, disk tersebut dilepas dalam mode seri.
Setelah Anda mengaktifkan pemasangan paralel, bidang
Deviceyang dikembalikan oleh API seperti ECS DescribeDisks, serta titik pemasangan yang ditampilkan di konsol mungkin tidak akurat. Jangan gunakan jalur pemasangan ini dalam bisnis Anda. Anda dapat menggunakan nomor seri disk untuk memastikan jalur pemasangan aktual.
Prosedur
Anda dapat mengaktifkan pemasangan disk paralel secara manual atau menggunakan skrip otomatis untuk mengaktifkan fitur ini.
Gunakan skrip otomatis
Simpan skrip berikut sebagai file bernama enable_parallel_attach.sh.
Jalankan skrip untuk memasang disk dalam mode paralel.
bash enable_parallel_attach.sh <Cluster ID>
Aktifkan fitur secara manual
Tambahkan sebuah ECS tag ke pool node klaster. Atur kunci tag menjadi
supportConcurrencyAttachdan nilai tag menjaditrue. Pastikan bahwa tag ditambahkan ke instance ECS baru.Masuk ke konsol ACK. Di panel navigasi di sebelah kiri, klik Clusters.
Di halaman Clusters, temukan klaster yang ingin dikelola dan klik namanya. Di panel navigasi di sebelah kiri, pilih .
Di halaman Pool Node, temukan pool node yang ingin dimodifikasi dan klik Edit di kolom Actions.
Di bagian bawah halaman, temukan bagian Opsi Lanjutan dan tambahkan sebuah ECS tag. Atur kuncinya menjadi
supportConcurrencyAttachdan nilainya menjaditrue.
Tambahkan tag ke instance ECS semua node yang ada di klaster. Atur kuncinya menjadi
supportConcurrencyAttachdan nilainya menjaditrue. Untuk informasi lebih lanjut, lihat Tambahkan Tag Kustom.Di panel navigasi di sebelah kiri, pilih Operations > Add-ons. Klik tab Storage, temukan komponen csi-provisioner, klik Konfigurasi di sudut kanan bawah komponen, dan atur parameter FeatureGate menjadi
DiskADController=true,DiskParallelAttach=true.CatatanSetelah Anda menentukan
DiskADController=true, operasiattachdandetachterkait dengan disk dilakukan oleh csi-provisioner. Setelah Anda menentukanDiskParallelAttach=true, fitur pemasangan disk paralel diaktifkan.Setelah Anda mengonfigurasi csi-provisioner, atur parameter FeatureGate komponen csi-plugin menjadi
DiskADController=true.
Verifikasi bahwa fitur pemasangan disk paralel diaktifkan
Dalam contoh ini, pod dengan sejumlah besar disk yang dipasang dibuat di node yang sama untuk memverifikasi percepatan startup pod setelah pemasangan paralel diaktifkan.
Statistik yang disediakan dalam topik ini hanya nilai teoretis. Nilai sebenarnya mungkin berbeda berdasarkan lingkungan Anda.
Tambahkan node yang mendukung banyak disk ke klaster ACK. Misalnya, Anda dapat memasang hingga 56 disk ke instance tipe ecs.g7se.16xlarge.
Buat file uji bernama attach-stress.yaml dan salin konten berikut ke file. Ganti
attach-stress.yamldengan nama sebenarnya dari node.Jalankan perintah berikut untuk mengonfirmasi bahwa aplikasi mulai seperti yang diharapkan. Kemudian, kurangi jumlah pod menjadi 0 untuk mempersiapkan tes pemasangan batch selanjutnya.
kubectl apply -f attach-stress.yaml kubectl rollout status sts attach-stress kubectl scale sts attach-stress --replicas 0Output yang Diharapkan:
storageclass.storage.k8s.io/alibabacloud-disk created statefulset.apps/attach-stress created partitioned roll out complete: 1 new pods have been updated... statefulset.apps/attach-stress scaledJalankan perintah berikut untuk memulai tes pemasangan batch dan hitung waktu yang diperlukan untuk memulai pod:
CatatanDalam kasus ini, pemasangan paralel dinonaktifkan untuk klaster. Sesuaikan jumlah pod untuk tes berdasarkan jumlah maksimum disk yang didukung oleh node Anda.
date && \ kubectl scale sts attach-stress --replicas 28 && \ kubectl rollout status sts attach-stress && \ dateOutput yang Diharapkan:
Selasa Oktober 15 19:21:36 CST 2024 statefulset.apps/attach-stress scaled Menunggu 28 pod siap... Menunggu 27 pod siap... <Dihilangkan...> Menunggu 3 pod siap... Menunggu 2 pod siap... Menunggu 1 pod siap... partitioned roll out complete: 28 new pods have been updated... Selasa Oktober 15 19:24:55 CST 2024Output menunjukkan bahwa lebih dari 3 menit diperlukan untuk memulai semua 28 pod ketika pemasangan paralel dinonaktifkan.
Aktifkan pemasangan paralel dengan mengikuti petunjuk di bagian Prosedur.
Jalankan perintah berikut untuk menghapus pod sebelumnya dan mempersiapkan putaran pengujian berikutnya:
CatatanPerhatikan sumber daya
volumeattachmentsdi klaster. Setelah sumber daya dihapus, disk dilepas. Proses ini membutuhkan beberapa menit.kubectl scale sts attach-stress --replicas 0Jalankan perintah berikut lagi untuk menghitung waktu yang diperlukan untuk memulai pod setelah pemasangan paralel diaktifkan. Waktu yang diharapkan adalah sekitar 40 detik, yang jauh lebih cepat daripada 3 menit ketika pemasangan paralel dinonaktifkan.
date && \ kubectl scale sts attach-stress --replicas 28 && \ kubectl rollout status sts attach-stress && \ dateOutput yang Diharapkan:
Selasa Oktober 15 20:02 54 CST 2024 statefulset.apps/attach-stress scaled Menunggu 28 pod siap... Menunggu 27 pod siap... <Dihilangkan...> Menunggu 3 pod siap... Menunggu 2 pod siap... Menunggu 1 pod siap... partitioned roll out complete: 28 new pods have been updated... Selasa Oktober 15 20:03:31 CST 2024
Jalankan perintah berikut untuk menghapus aplikasi uji di klaster:
kubectl delete -f attach-stress.yaml