Kubernetes ํด๋ฌ์คํฐ์์ HPA๊ฐ ๋์ํ๊ธฐ ์ํด์๋ metric-server๊ฐ ์ค์น๋์ด ์์ด์ผ ํฉ๋๋ค.
wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
# components.yaml > args ํญ๋ชฉ ํ๋จ์ ๋ค์ ์ค์ ์ถ๊ฐ
- --kubelet-insecure-tls
kubectl apply -f components.yaml
kubectl get pod -n kube-system
→ metrics-server Pod๊ฐ Running ์ํ์ธ์ง ํ์ธํฉ๋๋ค.
apt install -y apache2-utils
kubectl autoscale deployment aws9-deploy-blue \
--cpu-percent=40 \
--min=3 \
--max=10
aws9-deploy-blue์ Pod ํ๊ท CPU ์ฌ์ฉ๋ฅ ์ด 40%๋ฅผ ์ด๊ณผํ๋ฉด, ์ต๋ 10๊ฐ๊น์ง ์ฆ๊ฐ, ๋ฎ์์ง๋ฉด ๋ค์ 3๊ฐ๊น์ง ๊ฐ์ํฉ๋๋ค.
ab -c 200 -n 200 -t 30 http://<EXTERNAL-IP>/
→ ๋ช ์ด ๋ค์ kubectl get hpa๋ก ํ์ธํ๋ฉด ์ค์ผ์ผ์ ์ด ์์๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
๊ธฐ๋ฅ ์ค๋ช
HPA | ์ค์๊ฐ CPU/๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ฅ ์ ๋ฐ๋ผ Pod ๊ฐ์๋ฅผ ์กฐ์ |
VPA | ์ปจํ ์ด๋๊ฐ ์ฌ์ฉํ๋ ๋ฆฌ์์ค(cpu/memory)๋ฅผ ์ค์๊ฐ ๋ถ์ํ์ฌ request/limit ์๋ ์กฐ์ |
KEDA | ์์ฝ ์๊ฐ ๊ธฐ๋ฐ, ๋ฉ์์ง ํ, Kafka ๋ฑ ์ด๋ฒคํธ ๊ธฐ๋ฐ์ผ๋ก ๋ฏธ๋ฆฌ ์ค์ผ์ผ๋ง ๊ฐ๋ฅ |
โ ๏ธ HPA์ VPA๋ ๋์์ ์ฐ๋ฉด ์ถฉ๋ํ ์ ์์ด ๊ถ์ฅํ์ง ์์ต๋๋ค.
๋ณดํต์ HPA๋ก CPU ์ค์ผ์ผ๋ง, VPA๋ก Memory๋ฅผ ํ๋ํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌ๋ถํฉ๋๋ค.
HPA์ ๋์ ํ๋ฆ(๋ชจ๋ํฐ๋ง → metric-server → controller-manager → Pod ์ฆ๊ฐ)