https://kubernetes.io/ko/docs/tasks/run-application/horizontal-pod-autoscale/
-> ํฌ๋ ์์ฒด๋ฅผ ๋ณต์ ํ์ฌ ์ฒ๋ฆฌํ ์ ์๋ ํฌ๋์ ๊ฐ์๋ฅผ ๋๋ฆฌ๋ ๋ฐฉ๋ฒ
HPA๋ ์ปจํธ๋กค๋ฌ ๋งค๋์ ์์์ ์ฃผ๊ธฐ์ ์ผ๋ก ์คํํ๋ฉด์ ์ค์ ๋ HPA์ ์ํ๋ฅผ ํ์ธํจ.
HPA๊ฐ ๋ํ๋ก์ด๋จผํธ์ ์ํ ํ๋๋ค์ ์ํ๋ฅผ ๋ชจ๋ํฐ๋ง ํ๋ค๊ฐ ์ง์ ์ค๋ ์กฐ๊ฑด์ ์ด๋ฅด๋ฉด ๋ํ๋ก์ด๋จผํธ๋ฅผ ์ค์ผ์ผ ํด์ ํ๋ ๊ฐ์๋ฅผ ๋๋ฆฌ๊ฑฐ๋ ์ค์.
- ์คํํ ๋๋ง๋ค ์ง์ ๋ ์์์ ์ฌ์ฉ๋์ ์ฟ ๋ฒ๋คํฐ์ค API๋ก ํ์ธํ ํ ์ค์ ๋ HPA ์กฐ๊ฑด์ ๋ง์ ๋ ์คํ ์ค์ผ์ผ๋ง
- ๋์ํ๋ ๊ฐ์ = (ํ์ฌ ํ๋์ CPU์ฌ์ฉ๋ฅ ์ ๋ชจ๋ ๋ํ ๊ฐ / ๋ชฉํ CPU์ฌ์ฉ๋ฅ ) ์ ์ฌ๋ฆผํ ๊ฐ
kubectl autoscale deployment <๋ํ๋ก์ด๋จผํธ ๋ช
> --max 6 --min 4 --cpu-percent 50
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: php-apache
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: php-apache
minReplicas: 1
maxReplicas: 10
targetCPUUtilizationPercentage: 30 # ๋จ์ : %
while true; do curl localhost:30080;done
apiVersion: apps/v1
kind: Deployment
metadata:
name: php-apache
spec:
selector:
matchLabels:
run: php-apache
replicas: 1
template:
metadata:
labels:
run: php-apache
spec:
containers:
- name: php-apache
image: registry.k8s.io/hpa-example
ports:
- containerPort: 80
resources:
limits:
cpu: 500m
requests:
cpu: 200m
---
apiVersion: v1
kind: Service
metadata:
name: php-apache
labels:
run: php-apache
spec:
ports:
- port: 80
selector:
run: php-apache
kubectl autoscale deployment php-apache --cpu-percent=30 --min=1 --max=10
- ํ๋ ์ฆ๊ฐ : 3๋ถ
- ํ๋ ๊ฐ์ : 5๋ถ
kubectl run -i --tty load-generator --rm --image=busybox:1.28 --restart=Never -- /bin/sh -c "while sleep 0.01; do wget -q -O- http://php-apache; done"
๋ฆฌ์์ค๋ฅผ ์ฆ๊ฐ์์ผ ํฌ๋์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฆฌ์์ค๋ฅผ ๋๋ฆฌ๋ ๋ฐฉ๋ฒ
ํด๋ฌ์คํฐ ์์ฒด๋ฅผ ๋๋ฆฌ๋ ๋ฐฉ๋ฒ(๋ ธ๋ ์ถ๊ฐ)