GKE – Horizontal Pod Autoscaler

Trong bài này chúng ta sẽ sử dụng kubectl để cấu hình cho Autoscaler một cluster bằng horizontal pod autoscaler.

Trước tiến chúng ta cần tạo cluster, deployment, service cho ví dụ này.

Set zone config

gcloud config set compute/zone us-central1-b

Tạo cluster

gcloud container clusters create autoscaling-cluster

Tạo deyployment và service

kubectl run php-apache --image=k8s.gcr.io/hpa-example --requests=cpu=200m --expose --port=80

Ở đây chúng ta sử dụng image container hpa-example để tạo deployment và php-apache và expose port 80 với limit CPU.

kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10

Thực hiện command autoscaler này chúng ta muốn đặt mục tiêu sử dụng CPU là 50%, min Pod là 1 và max pod là 10.

Tứ là khi CPU sử dụng hơn 50%, sẽ tự động scaler thêm pod để giảm tải xuống, cũng như từ giảm số pod xuống phù hợp.

Để xem trạng thái của autoscaler, chúng ta dùng lệnh.

kubectl get hpa

Chúng ta thấy php-apache của chúng ta chỉ có 1 pod, vì lúc này, CPU chưa đạt ngưỡng, nên không cần tạo thêm pod khác.

Để thấy đc quá trình autoscale, mình sẽ cố tình tạo CPU xử lý nhiều hơn bằng các run thêm container và chạy vòng lặp vô hạn.

kubectl run -i --tty load-generator --image=busybox /bin/sh

Trong container này mình chạy vòng lặp

while true; do wget -q -O- http://php-apache.default.svc.cluster.local; done

Vòng lặp bắt đầu chạy, chúng ta mở tab mới để xem hpa. CPU bắt đầu tăng.

Replicas bắt đầu được thêm.

Bây giờ chúng ta thoát vòng lặp.

Số pods bắt đầu giảm dần.