Jika jumlah replika disetel ke 100, dan permintaan terlalu sedikit, maka 100 pod akan aktif dan berjalan. Ini menghasilkan pemborosan sumber daya CPU dan memori. Ya, ia menawarkan keandalan, dalam arti bahwa jika sebuah node mogok dan pod di dalamnya mati, pengontrol Replica Set akan mencoba mengembalikan jumlah pod menjadi 100 dengan memunculkan pod di node lain. Aplikasi tetap online.
Dalam arti yang lebih abstrak, Set Replika akan mencoba untuk mencapai keadaan yang diinginkan dari cluster dan akan melihat kondisi saat ini dan mencari tahu bagaimana itu dapat mencapai keadaan yang diinginkan.
Namun, kami ingin sesuatu yang sedikit lebih sensitif terhadap permintaan dunia nyata. Memasukkan Penskala Otomatis Pod Horisontal. Merupakan tugas dari Horizontal Pod Autoscaler untuk meningkatkan skala aplikasi saat dibutuhkan dan kemudian menurunkannya kembali setelah beban kerja berkurang.
Mengapa menggunakan Penskala Otomatis Pod Horizontal?
Seperti namanya, komponen ini akan menskalakan aplikasi Anda secara otomatis. Di cloud, ini benar-benar dapat membantu Anda mengurangi sumber daya komputasi dan memori yang akan dikenakan biaya. Karena Autoscaler sensitif terhadap penggunaan sumber daya, ketika melihat banyak pod yang menganggur, aplikasi akan diturunkan skalanya dan ketika permintaan pada pod tersebut meningkat, aplikasi akan ditingkatkan dengan membuat pod baru dan beban didistribusikan ke itu.
Ini dapat menghemat waktu Anda yang berharga dan sumber daya komputasi. Anda tidak perlu khawatir tentang jumlah Replika yang seharusnya untuk pod Anda saat menulis penerapan, autoscaler akan mengaturnya untuk Anda.
Pengaturan awal
Persyaratan pertama dan terpenting adalah Anda memiliki kluster Kubernetes yang sedang berjalan. Gunakan Katacoda Playground yang sempurna untuk eksperimen dan belajar tentang Kubernetes. Hal berikutnya yang Anda perlukan adalah server metrik.
Add-on ke sistem Kubernetes Anda (kube-system namespace) ini akan mengumpulkan metrik seperti CPU dan penggunaan memori dari dua perspektif yang berbeda:
- Sumber daya yang digunakan oleh setiap pod
- Sumber daya yang dikonsumsi di setiap node
Metrik dari kedua perspektif sangat penting dalam membantu Autoscaler memutuskan apa langkah selanjutnya yang harus dilakukan. Untuk menambahkan server metrik ke cluster Kubernetes Anda, ikuti panduan ini. Sekarang kita siap untuk melihat Horizontal Pod Autoscaler beraksi.
Menggunakan Autoscaler Auto
Untuk melihat Autoscaler berfungsi, kita memerlukan aplikasi pengujian. Mari membuat server php-apache sederhana dan mengeksposnya sebagai layanan.
$ kubectl menjalankan php-apache --image=k8s.gcr.io/hpa-example --requests=cpu=200m --expose--pelabuhan = 80
Gambar yang digunakan di sini adalah salah satu contoh gambar yang disediakan oleh proyek Kubernetes. Itu melakukan beberapa tugas intensif CPU dan membuat prosesnya jauh lebih jelas dengan melakukannya.
Untuk menskalakan secara otomatis penerapan ini, kami perlu memberi tahu penskala otomatis berapa jumlah pod minimum dan maksimum yang akan kami izinkan dan persentase CPU yang diizinkan untuk digunakan. Ada banyak faktor lain yang dapat Anda pertimbangkan seperti memori, penyimpanan, dan jaringan juga.
$ kubectl autoscale deployments/php-apache --cpu-percent=50 --min=1 --max=10Dalam kondisi saat ini, karena tidak ada yang menggunakan layanan ini, itu akan seperti tinggal di nilai minimum. Anda dapat memeriksa status semua penerapan penskalaan otomatis di namespace default dengan menjalankan:
$ kubectl dapatkan hpaNAMA REFERENSI TARGET MINPODS MAXPODS REPLIKASI USIA
php-apache Deployment/php-apache 0%/50% 1 10 1 2m
Menghasilkan Beban dan Menguji Fitur Autoscale
Anda dapat melihat jumlah replika masih hanya satu dan beban CPU sangat rendah. Kita dapat membuat beban tambahan dan melihat bagaimana autoscaler meresponnya. Layanan yang mengekspos pod php-apache kami tidak diekspos ke dunia luar, jadi kami akan membuat pod sementara dan membuka sesi shell interaktif di pod itu.
Ini akan memungkinkan kita untuk berkomunikasi dengan semua layanan yang tersedia di cluster, termasuk layanan php-apache.
$ kubectl run -i --tty busybox --image=busybox --restart=Never -- sh/ #
Anda akan melihat bahwa prompt akan berubah yang menunjukkan bahwa kita berada di dalam wadah ini. Sekarang mari kita coba dan berikan beban pada layanan kami dengan berulang kali membuat permintaan. Di prompt baru, mari kita jalankan while loop berikut:
/ # sementara benar; lakukan wget -q -O- http://php-apache.default.svc.gugus.lokal; selesaiBuka terminal baru, karena kita belum bisa membiarkan loop ini berakhir. Setelah memeriksa penskala otomatis, Anda akan melihat penggunaan CPU dan setelah mendaftar pod, Anda akan melihat sekarang ada beberapa contoh server php-apache,
$ kubectl dapatkan hpaNAMA REFERENSI TARGET MINPODS MAXPODS REPLIKASI USIA
php-apache Deployment/php-apache 121%/50% 1 10 4 1j
$ kubectl dapatkan pod
NAMA SIAP STATUS MULAI ULANG USIA
busybox 1/1 Lari 0 6m
php-apache-8699449574-7qwxd 1/1 Berjalan 0 28 detik
php-apache-8699449574-c9v54 1/1 Menjalankan 0 10j
php-apache-8699449574-h9s5f 1/1 Berjalan 0 28 detik
php-apache-8699449574-sg4hz 1/1 Berjalan 0 28 detik
Hentikan loop while dan jumlah pod akan berkurang menjadi satu dalam beberapa menit.
Kesimpulan
Jadi itulah demonstrasi sederhana dari Horizontal Pod Autoscaler. Ingatlah untuk memiliki server metrik fungsional untuk cluster Anda dan saat membuat penerapan, pertahankan jumlah replika pada 1. Autoscaler pod horizontal akan menangani sisanya.