Kubernetes

Penskala Otomatis Pod Horizontal Kubernetes

Penskala Otomatis Pod Horizontal Kubernetes
Pod dapat dibuat sebagai objek yang berdiri sendiri, atau sebagai bagian dari set replika yang dapat diskalakan atau penerapan. Masing-masing dari dua objek terakhir digunakan untuk menyebarkan tidak hanya satu pod, tetapi banyak dari mereka. Tujuannya di sini adalah bahwa pod dapat sepadan jika satu memiliki terlalu banyak lalu lintas, dua lagi dapat muncul dan mengambil beban ekstra. Namun, hal penting yang perlu diperhatikan di sini adalah bahwa baik kumpulan replika maupun objek penerapan memiliki sejumlah kode keras replika pod yang ingin mereka jalankan.

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:

  1. Sumber daya yang digunakan oleh setiap pod
  2. 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=10

Dalam 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 hpa
NAMA         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; selesai

Buka 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 hpa
NAMA         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.

Cara Menggunakan AutoKey untuk Mengotomatiskan Game Linux
AutoKey adalah utilitas otomatisasi desktop untuk Linux dan X11, diprogram dengan Python 3, GTK dan Qt. Dengan menggunakan skrip dan fungsionalitas MA...
Cara Menampilkan Penghitung FPS di Game Linux
Game Linux mendapat dorongan besar ketika Valve mengumumkan dukungan Linux untuk klien Steam dan game mereka pada tahun 2012. Sejak itu, banyak game A...
Cara mengunduh dan Memainkan Civilization VI Sid Meier di Linux
Pengenalan permainan Civilization 6 adalah konsep modern dari konsep klasik yang diperkenalkan dalam seri game Age of Empires. Idenya cukup sederhana;...