Kubernetes์์ Pod์ requests์ limits๋
์๋น์ค์ ์์ ์ฑ๊ณผ ํด๋ฌ์คํฐ ๋น์ฉ ํจ์จ์ฑ์ ํต์ฌ์ ์ธ ์ญํ ์ ํฉ๋๋ค.
ํ์ง๋ง ํ์ค์โฆ
โCPU๋ ๊ทธ๋ฅ 500m ์ ๋ ์ฃผ๋ฉด ๋์ง ์์๊น?โ
โ๋ฉ๋ชจ๋ฆฌ๋ ๋๋ํ๊ฒ 1Gi?โ
์ด๋ฐ ๊ฐ๊ฐ์ ์ถ์ ์ ์์กดํ ๋ฆฌ์์ค ์ค์ ์ ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ๋ฅผ ์ด๋ํฉ๋๋ค:
๊ทธ๋์ ์ด๋ฅผ ๋ฐ์ดํฐ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ์ ํ๊ธฐ ์ํ ๋๊ตฌ๋ก Goldilocks๋ฅผ ์๋ํด๋ณด์์ต๋๋ค.
Goldilocks๋
VPA(Vertical Pod Autoscaler) ๋ฅผ ํ์ฉํ์ฌ
Pod์ ์ค์ ๋ฆฌ์์ค ์ฌ์ฉ๋์ ์์งํ๊ณ , ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก Request/Limit ์ถ์ฒ ๊ฐ์ ์ ์ํด์ฃผ๋ ๋๊ตฌ์ ๋๋ค.
๐ฏ ๋ชฉํ: ๋๋ฌด ๋ง์ง๋, ๋๋ฌด ์ ์ง๋ ์์
VPA ๋ฆฌํฌ๋ฅผ ์ง์ ํด๋ก ํ์ฌ ์๋ ์ค์นํ์ต๋๋ค.
git clone https://github.com/kubernetes/autoscaler.git
cd autoscaler/vertical-pod-autoscaler/
./hack/vpa-up.sh
helm repo add fairwinds-stable https://charts.fairwinds.com/stable
helm repo update
helm install goldilocks fairwinds-stable/goldilocks \
--namespace goldilocks --create-namespace \
--set controller.vpa.enabled=true \
--set controller.vpa.updateMode=Off
๐ updateMode=Off๋ฅผ ์ค์ ํ ์ด์ : ์ค ์ด์ ์ค์ธ ๋ฆฌ์์ค๋ฅผ VPA๊ฐ ์๋ ์กฐ์ ํ์ง ์๋๋ก ๋ง๊ณ ์ถ์ฒ ๊ฐ๋ง ์ฐธ๊ณ ํ ํ ์๋ ์ ์ฉ
kubectl port-forward -n goldilocks svc/goldilocks-dashboard 8080:80
์น ๋ธ๋ผ์ฐ์ ์์ http://localhost:8080 ์ ์ํ์ฌ ๋์๋ณด๋ ํ์ธ ๊ฐ๋ฅ.
๐ ๋ถ์ ๋์ ๋ค์์คํ์ด์ค์ ๋ผ๋ฒจ ์ง์ :
kubectl label ns <๋ค์์คํ์ด์ค๋ช
> goldilocks.fairwinds.com/enabled=true

| ํญ๋ชฉ | ๋ด์ฉ |
|---|---|
| ๋ฆฌ์์ค ์ค์ | ์ผ๋ถ ์๋น์ค๋ ๊ณผ๋ํ๊ฒ ๋๊ฒ ์ค์ ๋จ (์: CPU 1 โ ์ค์ ์ฌ์ฉ 0.1) |
| ์ถ์ฒ ๋ฒ์ | Lower / Target / Upper ๊ฐ์ผ๋ก ๋ค์ํ๊ฒ ์ ์๋จ |
| ์ ์ฉ ์ ๋ต | Helm chart ๋๋ Kustomize๋ฅผ ํตํด ํฅํ ์๋ ๋ฐ์ ์์ |
| ์์ ์ฑ | updateMode=Off ์ค์ ์ผ๋ก ์ด์ ๋ฆฌ์คํฌ ์์ด ๋ถ์ ๊ฐ๋ฅ |
์ด๋ฒ ์๋๋ ์ด์ ๋ฆฌ์์ค๋ฅผ ์์ ์ ์ผ๋ก ๋ถ์ํ๊ณ ๊ฐ์ ๋ฐฉํฅ์ ๋ชจ์ํ ์ ์๋ ์ฒซ ๋จ๊ณ์์ต๋๋ค.
Goldilocks๋ ์๊ฐ๋ณด๋ค ์ฝ๊ฒ ๋์ ํ ์ ์์๊ณ ,
VPA + updateMode=Off ์กฐํฉ์ ์ค๋ฌด ํ๊ฒฝ์์๋ ์์ ์ฑ๊ณผ ์ ์ฉ์ฑ์ ๋ชจ๋ ํ๋ณดํ ์ ์๋ ๋ฐฉ์์ด๋ผ ํ๋จ๋ฉ๋๋ค.