Kubernetes - Penskalaan Otomatis
Autoscalingadalah salah satu fitur utama dalam cluster Kubernetes. Ini adalah fitur di mana cluster mampu meningkatkan jumlah node karena permintaan untuk respons layanan meningkat dan mengurangi jumlah node saat kebutuhan menurun. Fitur penskalaan otomatis ini sekarang didukung di Google Cloud Engine (GCE) dan Google Container Engine (GKE) dan akan segera dimulai dengan AWS.
Untuk menyiapkan infrastruktur skalabel di GCE, pertama-tama kita harus memiliki project GCE aktif dengan fitur pemantauan cloud Google, logging cloud google, dan stackdriver aktif.
Pertama, kita akan menyiapkan cluster dengan beberapa node yang berjalan di dalamnya. Setelah selesai, kita perlu menyiapkan variabel lingkungan berikut.
Variabel Lingkungan
export NUM_NODES = 2
export KUBE_AUTOSCALER_MIN_NODES = 2
export KUBE_AUTOSCALER_MAX_NODES = 5
export KUBE_ENABLE_CLUSTER_AUTOSCALER = true
Setelah selesai, kita akan memulai cluster dengan menjalankan kube-up.sh. Ini akan membuat cluster bersama dengan cluster auto-scalar add on.
./cluster/kube-up.sh
Saat membuat cluster, kita dapat memeriksa cluster kita menggunakan perintah kubectl berikut.
$ kubectl get nodes
NAME STATUS AGE
kubernetes-master Ready,SchedulingDisabled 10m
kubernetes-minion-group-de5q Ready 10m
kubernetes-minion-group-yhdx Ready 8m
Sekarang, kita dapat menerapkan aplikasi pada cluster lalu mengaktifkan autoscaler pod horizontal. Ini dapat dilakukan dengan menggunakan perintah berikut.
$ kubectl autoscale deployment <Application Name> --cpu-percent = 50 --min = 1 --
max = 10
Perintah di atas menunjukkan bahwa kami akan mempertahankan setidaknya satu dan maksimum 10 replika POD saat beban aplikasi meningkat.
Kami dapat memeriksa status penskala otomatis dengan menjalankan $kubclt get hpaperintah. Kami akan meningkatkan beban pada pod menggunakan perintah berikut.
$ kubectl run -i --tty load-generator --image = busybox /bin/sh
$ while true; do wget -q -O- http://php-apache.default.svc.cluster.local; done
Kami dapat memeriksa hpa dengan berlari $ kubectl get hpa perintah.
$ kubectl get hpa
NAME REFERENCE TARGET CURRENT
php-apache Deployment/php-apache/scale 50% 310%
MINPODS MAXPODS AGE
1 20 2m
$ kubectl get deployment php-apache
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
php-apache 7 7 7 3 4m
Kami dapat memeriksa jumlah pod yang berjalan menggunakan perintah berikut.
jsz@jsz-desk2:~/k8s-src$ kubectl get pods
php-apache-2046965998-3ewo6 0/1 Pending 0 1m
php-apache-2046965998-8m03k 1/1 Running 0 1m
php-apache-2046965998-ddpgp 1/1 Running 0 5m
php-apache-2046965998-lrik6 1/1 Running 0 1m
php-apache-2046965998-nj465 0/1 Pending 0 1m
php-apache-2046965998-tmwg1 1/1 Running 0 1m
php-apache-2046965998-xkbw1 0/1 Pending 0 1m
Dan terakhir, kita bisa mendapatkan status node.
$ kubectl get nodes
NAME STATUS AGE
kubernetes-master Ready,SchedulingDisabled 9m
kubernetes-minion-group-6z5i Ready 43s
kubernetes-minion-group-de5q Ready 9m
kubernetes-minion-group-yhdx Ready 9m