Sekiranya jumlah replika ditetapkan ke 100, dan permintaannya terlalu sedikit, maka 100 pod akan habis dan berjalan. Ini mengakibatkan pembaziran sumber CPU dan memori. Ya, ia menawarkan kebolehpercayaan, dalam arti bahawa jika nod rosak dan pod di dalamnya mati, pengawal Set Replika akan berusaha mengembalikan bilangan pod kembali ke 100 dengan memunculkan pod di nod lain. Permohonan tetap dalam talian.
Dalam pengertian yang lebih abstrak, Set Replika akan berusaha mencapai keadaan yang diingini kluster dan akan melihat pada keadaan sekarang dan fikirkan bagaimana ia dapat mencapai keadaan yang diingini.
Namun, kami menginginkan sesuatu yang sedikit lebih sensitif terhadap permintaan dunia nyata. Masukkan Autoscaler Pod Mendatar. Ini adalah tugas Horizontal Pod Autoscaler untuk meningkatkan aplikasi apabila diperlukan dan kemudian menurunkannya kembali setelah beban kerja turun.
Mengapa menggunakan Autoscaler Pod Mendatar?
Seperti namanya, komponen ini akan menskalakan aplikasi anda secara automatik. Di awan, ini benar-benar dapat membantu anda mengurangkan perkiraan dan sumber memori yang akan dikenakan untuk anda. Oleh kerana Autoscaler peka terhadap penggunaan sumber daya, ketika melihat banyak polong hanya diam, ia akan menurunkan aplikasi dan ketika permintaan pada pod tersebut meningkat, aplikasi akan meningkatkan aplikasi dengan membuat pod baru dan beban akan diedarkan ke mereka.
Ia dapat menjimatkan masa berharga dan mengira sumber. Anda tidak perlu bimbang tentang jumlah replika untuk pod anda semasa menulis penyebaran, autoscaler akan menguruskannya untuk anda.
Persediaan Awal
Keperluan pertama dan terpenting adalah anda mempunyai kluster Kubernetes yang berjalan. Gunakan Katacoda Playground yang sangat sesuai untuk percubaan dan pembelajaran mengenai Kubernetes. Perkara seterusnya yang anda perlukan adalah pelayan metrik.
Tambahan pada sistem Kubernetes anda (ruang nama sistem kube) akan mengumpulkan metrik seperti CPU dan penggunaan memori dari dua perspektif yang berbeza:
- Sumber yang digunakan oleh setiap pod
- Sumber digunakan pada setiap nod
Metrik dari kedua perspektif sangat penting dalam membantu Autoscaler memutuskan apa langkah seterusnya. Untuk menambahkan pelayan metrik ke kluster Kubernetes anda, ikuti panduan ini. Sekarang kita bersedia untuk melihat Horizontal Pod Autoscaler beraksi.
Menggunakan Autoscaler
Untuk melihat Autoscaler berfungsi, kami memerlukan aplikasi ujian. Mari buat pelayan php-apache yang mudah dan dedahkan sebagai perkhidmatan.
$ kubectl menjalankan php-apache --image = k8s.gcr.io / hpa-contoh - permintaan = cpu = 200m - expose--pelabuhan = 80
Gambar yang digunakan di sini adalah salah satu contoh gambar yang disediakan oleh projek Kubernetes. Ia melakukan beberapa tugas intensif CPU dan menjadikan prosesnya lebih jelas dengan melakukannya.
Untuk skala automatik penyebaran ini, kita perlu memberitahu penskala otomatis berapa jumlah minimum dan maksimum pod yang akan kita izinkan dan peratusan CPU yang mereka boleh gunakan. Terdapat banyak lagi faktor yang boleh anda pertimbangkan seperti memori, storan dan rangkaian juga.
$ kubectl autoscale deployment / php-apache --cpu-peratus = 50 --min = 1 --max = 10Dalam keadaan sekarang, kerana tidak ada yang menggunakan perkhidmatan ini, ia paling suka tinggal pada nilai minimum. Anda boleh memeriksa keadaan semua penyebaran secara automatik di ruang nama lalai dengan menjalankan:
$ kubectl dapatkan hpaNAMA RUJUKAN SASARAN MINPOD MAXPOD REPLIKA UMUR
php-apache Penyebaran / php-apache 0% / 50% 1 10 1 2m
Menjana Beban dan Menguji Ciri Autoskala
Anda dapat melihat bilangan replika hanya satu dan beban CPU tidak seberapa. Kami dapat membuat beban tambahan dan melihat bagaimana autoscaler bertindak balas terhadapnya. Perkhidmatan yang memaparkan pod php-apache kami tidak terdedah kepada dunia luar, jadi kami akan membuat pod sementara dan membuka sesi shell interaktif di pod itu.
Ini akan membolehkan kita berkomunikasi dengan semua perkhidmatan yang ada di kluster, termasuk perkhidmatan php-apache.
$ kubectl run -i --tty busybox --image = busybox --restart = Never - sh/ #
Anda akan melihat bahawa permintaan akan berubah menunjukkan bahawa kita berada di dalam bekas ini. Mari sekarang cuba dan bebankan perkhidmatan kami dengan membuat permintaan berulang kali. Dalam prompt baru, mari jalankan yang berikut sambil gelung:
/ # selagi benar; lakukan wget -q -O- http: // php-apache.lalai.svc.gugusan.tempatan; selesaiBuka terminal baru, kerana kami tidak dapat membiarkan gelung ini berakhir. Setelah memeriksa autoscaler, anda akan melihat penggunaan CPU dan setelah menyenaraikan pod anda akan melihat sekarang terdapat banyak contoh pelayan php-apache,
$ kubectl dapatkan hpaNAMA RUJUKAN SASARAN MINPOD MAXPOD REPLIKA UMUR
php-apache Penyebaran / php-apache 121% / 50% 1 10 4 1h
$ kubectl dapatkan pod
NAMA READY STATUS RESTARTS UMUR
kotak sibuk 1/1 Berlari 0 6m
php-apache-8699449574-7qwxd 1/1 Berlari 0 28s
php-apache-8699449574-c9v54 1/1 Berlari 0 10jam
php-apache-8699449574-h9s5f 1/1 Berlari 0 28s
php-apache-8699449574-sg4hz 1/1 Berlari 0 28s
Hentikan gelung sementara dan bilangan polong akan hilang menjadi satu dalam beberapa minit.
Kesimpulannya
Jadi itu adalah demonstrasi ringkas Horizontal Pod Autoscaler. Ingatlah untuk mempunyai pelayan metrik yang berfungsi untuk kluster anda dan semasa membuat penyebaran, pertahankan jumlah replika pada 1. Autoscaler pod mendatar akan menjaga selebihnya.