🎉
k8sのautoscaleを体験してみる
こちらの続き:
今回は前回のPHPコードを走らせて、オートスケールを体験してみる。
今のところはPodは一つだけ走っている。
web-php-7ff76d6c6c-n7b8n 1/1 Running 0 21h 10.244.1.32 node01 <none> <none>
node01では以下のように説明されている
$ kubectl describe node node01
...
Namespace Name CPU Requests CPU Limits Memory Requests Memory Limits Age
--------- ---- ------------ ---------- --------------- ------------- ---
default web-php-7ff76d6c6c-n7b8n 200m (10%) 0 (0%) 0 (0%) 0 (0%) 21h
kube-flannel kube-flannel-ds-x82p8 100m (5%) 0 (0%) 50Mi (2%) 0 (0%) 22d
kube-system kube-proxy-zt6qq 0 (0%) 0 (0%) 0 (0%) 0 (0%) 22d
Allocated resources:
(Total limits may be over 100 percent, i.e., overcommitted.)
Resource Requests Limits
-------- -------- ------
cpu 300m (15%) 0 (0%)
memory 50Mi (2%) 0 (0%)
もう一つのターミナルで以下を走らせる:
watch kubectl get deploy,rs,hpa,po,svc
Output
Every 2.0s: kubectl get deploy,rs,hpa,po,svc controlplane: Sat Feb 15 13:18:17 2025
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/web-php 1/1 1 1 22h
NAME DESIRED CURRENT READY AGE
replicaset.apps/web-php-7ff76d6c6c 1 1 1 21h
NAME READY STATUS RESTARTS AGE
pod/busybox 1/1 Running 0 67s
pod/web-php-7ff76d6c6c-n7b8n 1/1 Running 0 21h
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 22d
service/web-php NodePort 10.98.184.194 <none> 80:31446/TCP 22h
service/web-service-np NodePort 10.106.83.165 <none> 80:30785/TCP 11d
HPAを適用する。
kubectl autoscale deployment web-php --cpu-percent=50 --min=1 --max=10
HPAコントローラが作られた
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
horizontalpodautoscaler.autoscaling/web-php Deployment/web-php cpu: <unknown>/50% 1 10 0 13s
もう一つでは負荷をかけるbusyboxを起動する
kubectl run busybox --image=busybox --rm --restart=Never sh
while true; do wget -q -O - http://web-php>/dev/null; done
2分ほどたったところで新しいポッドが作成されたことがわかる!
CPU使用率は以下のような感じ:
$ kubectl top pods
NAME CPU(cores) MEMORY(bytes)
busybox 579m 1Mi
web-php-7ff76d6c6c-l69s7 44m 11Mi
web-php-7ff76d6c6c-n7b8n 65m 12Mi
Busyboxのリクエストを止めると、数分後にポッドも1に戻った。
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
horizontalpodautoscaler.autoscaling/web-php Deployment/web-php cpu: 0%/50% 1 10 1 20m
NAME READY STATUS RESTARTS AGE
pod/busybox 1/1 Running 0 22m
pod/busybox2 1/1 Running 0 10m
pod/web-php-7ff76d6c6c-l69s7 1/1 Running 0 18m
Discussion