๐ Vertical Pod Autoscaler (VPA)
1. ์๋ ๋ฐฉ์ (Vertical Scaling ์๋ ์ ์ฉ)
- Pod์ด
250m CPU ์์ฒญ, 500m CPU ์ ํ์ผ๋ก ์ค์ ๋จ.
- ๊ด๋ฆฌ์๊ฐ ์ง์
kubectl top pod๋ก ๋ฆฌ์์ค ์ฌ์ฉ๋ ํ์ธ (โ metrics-server ํ์).
- ์๊ณ์น ์ด๊ณผ ์
kubectl edit deployment๋ก ๋ฆฌ์์ค ์์ฒญ/์ ํ ์์ .
- ์์ ์ ๊ธฐ์กด Pod๋ ์ข
๋ฃ๋๊ณ ์๋ก์ด Pod๊ฐ ์์ฑ๋จ.
2. VPA ๊ฐ์
- Pod ๋ฆฌ์์ค๋ฅผ ์๋์ผ๋ก ์กฐ์ (CPU/๋ฉ๋ชจ๋ฆฌ ์ฆ๊ฐ).
- Horizontal Pod Autoscaler(HPA)์ ๋ฌ๋ฆฌ, VPA๋ ๊ธฐ๋ณธ ๋ด์ฅ ์๋ โ ์ค์น ํ์.
- ์ค์น ํ
kube-system ๋ค์์คํ์ด์ค์ ๋ค์ ์ปดํฌ๋ํธ ์คํ๋จ:
- Recommender
- Metrics API์์ ๋ฆฌ์์ค ์ฌ์ฉ๋ ์์ง (์ค์๊ฐ + ํ์คํ ๋ฆฌ).
- CPU/๋ฉ๋ชจ๋ฆฌ ์ต์ ๊ฐ ์ถ์ฒ.
- ์ง์ Pod ์์ ์ ํ์ง ์์.
- Updater
- Recommender ๊ฐ๊ณผ ์ค์ Pod ๋น๊ต.
- ๋ฆฌ์์ค๊ฐ ๋นํจ์จ์ ์ผ ๊ฒฝ์ฐ Pod๋ฅผ evict(์ข
๋ฃ).
- Admission Controller
- Pod ์์ฑ ์ไปๅ
ฅ, ์ถ์ฒ๊ฐ์ ์ ์ฉํ์ฌ ์ Pod ๋ฆฌ์์ค ์ ์ ๋ณ๊ฒฝ.
- ์๋ก ์์ฑ๋๋ Pod๋ ์ฌ๋ฐ๋ฅธ ๋ฆฌ์์ค ํฌ๊ธฐ๋ก ์์.
3. VPA ์ ์ ํ์ผ ์์
apiVersion: autoscaling.k8s.io/v1
kind: VerticalPodAutoscaler
metadata:
name: my-app-vpa
spec:
targetRef:
apiVersion: "apps/v1"
kind: Deployment
name: my-app
resourcePolicy:
containerPolicies:
- containerName: '*'
minAllowed:
cpu: 200m
maxAllowed:
cpu: 2
controlledResources: ["cpu"]
updatePolicy:
updateMode: "Auto"
4. VPA Update Policy ๋ชจ๋
- Off
- ์ถ์ฒ๋ง ์ ๊ณต (Recommender๋ง ๋์).
- Initial
- Pod ์์ฑ ์์๋ง ์ถ์ฒ๊ฐ ๋ฐ์.
- ๊ธฐ์กด Pod์๋ ์ ์ฉ๋์ง ์์.
- Recreate
- Updater๊ฐ Pod๋ฅผ evict ํ, ์๋ก ์์ฑ ์ ์ถ์ฒ๊ฐ ๋ฐ์.
- Auto
- ํ์ฌ๋ Recreate์ ๋์ผ (Pod ์ข
๋ฃ ํ ์๋ก ์์).
- ๋ฏธ๋์๋ in-place resize ๊ธฐ๋ฅ๊ณผ ๊ฒฐํฉ๋์ด Pod ์ข
๋ฃ ์์ด ์ ์ฉ๋ ์์ .