์ฟ ๋ฒ๋คํฐ์ค์์ Auto Scaling
Auto Scaling์ ๋ถํ์ ์๊ตฌ ์ฌํญ์ ๋ฐ๋ผ ์ปดํจํ ๋ฆฌ์์ค๋ฅผ ์๋์ผ๋ก ์กฐ์ ํ์ฌ ์ต์ ์ ์ฑ๋ฅ๊ณผ ๋น์ฉ ํจ์จ์ฑ์ ์ ๊ณตํ๋ ํ๋ก์ธ์ค์ ๋๋ค.
EKS์์ Auto Scaling์ โPod Auto Scalingโ๊ณผ โNode Auto Scalingโ 2๊ฐ์ง๊ฐ ์์ต๋๋ค.
Pod์ Auto Scaling
- Horizontal Pod Autoscaler(HPA) : pod์ ์ํ์ ์ธ scaling(scale out/in)์ ๋ด๋นํ๋ ์ปดํฌ๋ํธ
- Vertical Pod Autoscaler(VPA) : pod์ ์์ง์ ์ธ scaling(scale up/down)์ ๋ด๋นํ๋ ์ปดํฌ๋ํธ
Node์ Auto Scaling
- Cluster AutoScaler(CA) : k8s ํด๋ฌ์คํฐ์์ ๋ ธ๋๋ฅผ scalingํ๋ k8s์ ๊ธฐ๋ณธ ์ปดํฌ๋ํธ(Scale out/in)
- Karpenter : k8s cluster autocaling๋ฅผ ์ํด AWS์์ ๋ง๋ ์คํ์์ค ํ๋ก์ ํธ
Karpenter์ Cluster Autoscaler
์ฌ๊ธฐ์๋ EKS ํ๊ฒฝ์์ ๋์ํ๋ CA์ Karpenter๋ฅผ ๋น๊ตํ๊ณ ๊ฐ๊ฐ์ ๋์ ๋ฐฉ์์ ์ดํดํ๊ณ ์ ํฉ๋๋ค.
CA๋ AWS ๋ฆฌ์์ค์ธ Auto Scaling Group(ASG)๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ฌ์คํฐ์ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ์ง๋ง, Karpenter๋ EC2๋ฅผ ์ง์ ์กฐ์ํ์ฌ ํด๋ฌ์คํฐ์ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํฉ๋๋ค.
CA๋ ๊ทธ๋ฃน ๋จ์๋ก ๋ ธ๋๋ฅผ ๊ด๋ฆฌํ์ง๋ง Karpenter๋ ๋ ธ๋ ๊ทธ๋ฃน์ด๋ผ๋๊ฐ๋ ์ ์ฌ์ฉํ์ง ์์ผ๋ฏ๋ก ์ ํ ์์ด ํด๋ฌ์คํฐ๋ฅผ ํ์ฅํ๊ฑฐ๋ ์ถ์ํ ์ ์์ต๋๋ค.
Karpenter๋ EC2 API๋ฅผ ์ง์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ CA์ ๋นํด ๋น ๋ฅด๊ณ , ์ ์ฐํ๋ฉฐ k8s nativeํฉ๋๋ค.
CA๋ฅผ ์ฌ์ฉํ๋ฉด ํ๋์ EC2์ ๋ํด ASG์์๋ ์ธ์คํด์ค๋ก, EKS์์๋ ๋ ธ๋๋ก ๊ด๋ฆฌํ๊ธฐ ๋๋ฌธ์ ๊ด๋ฆฌ์ ์ด๋ ค์์ด ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, kubectl๋ก ์ง์ ๋ ธ๋๋ฅผ ์ญ์ ํ๋ค๋ฉด ASG๋ ์ด๋ฅผ ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ EC2 ์ธ์คํด์ค๋ฅผ ์ญ์ ํ์ง ์์ต๋๋ค.EKS์ ๋ ธ๋ ๊ทธ๋ฃน์ 1๊ฐ์ Capacity type๋ง ์ง์ ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์
CA๋ฅผ ์ฌ์ฉํ๋ฉด์ Spot๊ณผ On-Demand๋ฅผ ํจ๊ป ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์ฌ๋ฌ ๊ฐ์ ๋ ธ๋ ๊ทธ๋ฃน์ ์ฌ์ฉํด์ผํฉ๋๋ค.CA๋ ์ฌ๋ฌ ๊ฐ์ ๋ ธ๋ ๊ทธ๋ฃน์ด ์กด์ฌํ๋ ๊ฒฝ์ฐ ํ์ฅํ ๋ ธ๋ ๊ทธ๋ฃน์ ๊ฒฐ์ ํด์ผ ํฉ๋๋ค.
CA๋ expander ์ต์ ์ ํตํด ์ฌ๋ฌ๊ฐ์ง scaling ์ ๋ต(random, priority, price ๋ฑ)๋ฅผ ์ ํํ ์ ์์ต๋๋ค.
(๊ธฐ๋ณธ expander๋ random์ด๊ณ AWS๋ price expander๋ฅผ ์ง์ํ์ง ์์ต๋๋ค.)EKS์ ๋ ธ๋ ๊ทธ๋ฃน์ ASG์ ๊ธฐ๋ฐํ๋ฉฐ ๋ ธ๋ ๊ทธ๋ฃน์ ์ธ์คํด์ค ์ฌ์ด์ฆ๋ 1๊ฐ์ง๋ก ์ ํ๋ ๊ฒ์ด ๊ถ์ฅ๋ฉ๋๋ค.
CA๋ฅผ ์ฌ์ฉํ๋ฉด ๋ ธ๋ ๊ทธ๋ฃน์ ์ต๋ ํฌ๊ธฐ๋ฅผ ๋ฏธ๋ฆฌ ์ ํด์ผ ํฉ๋๋ค.
CA๋ ๋ ธ๋ ๊ทธ๋ฃน ๋ด์ ๋ชจ๋ ๋ ธ๋๊ฐ ๊ฐ์ vCPU์ Memory๋ฅผ ๊ฐ์ง๊ณ ์๋ค๊ณ ๊ฐ์ ํ๊ธฐ ๋๋ฌธ์ ์์์ ๋ญ๋น๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด 0.5vCPU์/256MiB๋ฅผ ์ฌ์ฉํ๋ ํ๋์ ํ๋๋ฅผ ์คํํ๋๋ฐ 8vCPU/32Gib ์ฌ์ด์ฆ์ ๋ ธ๋๊ฐ ํ๋ก๋น์ ๋ ๋ ์๋ ์์ต๋๋ค.Karpenter๋ CA์ ๋นํด ์๋ก์ด ๊ธฐ์ ์ด๋ผ ๊ธฐ์ ์ ์ฑ์๋๊ฐ ๋ฎ์ต๋๋ค.
Karpenter๋ EC2 Fleet์ผ๋ก ๋ ธ๋๋ฅผ ํ๋ก๋น์ ๋ ํฉ๋๋ค.
EC2 Fleet์ ํ ๋ฒ์ API ํธ์ถ๋ก ์ฌ๋ฌ๊ฐ์ง ๊ตฌ๋งค ์ต์ (Spot, On-Demand, RI)์ ์ฌ๋ฌ๊ฐ์ง ์ธ์คํด์ค ํ์ , ์ฌ๋ฌ ๊ฐ์ฉ์์ญ์ ๊ฑธ์ณ EC2๋ฅผ ํ๋ก๋น์ ๋ํ๋ ๊ธฐ๋ฅ์ ๋๋ค.Karpenter๋ ์ํฌ๋ก๋์ Capacity๋ฅผ ๋จ์ํํ์ฌ Spot๊ณผ On-Demand ๋ฟ๋ง ์๋๋ผ ์ฌ๋ฌ๊ฐ์ง ์ธ์คํด์ค ํ์ ์ ํผํฉํ์ฌ ์ฌ์ฉํ ์ ์์ต๋๋ค.
CA์ ๋์ ๋ฐฉ์
Scale Out
- K8S ํด๋ฌ์คํฐ์ ํ๋๋ฅผ ๋ฐฐ์นํ ์ถฉ๋ถํ ์ฉ๋์ด ์์ด Pending ์ํ์ ํ๋๊ฐ ๋ฐ์ํ์ฌ CA๋ Pending ์ํ์ธ ํ๋๋ฅผ ๊ฐ์งํฉ๋๋ค.
- CA๋ ํ๋๋ฅผ ์ค์ผ์ค๋งํ๊ธฐ ์ํด ์คํํ๊ธฐ ์ํ ๋ฆฌ์์ค๋ฅผ ํ๋ณดํ๊ธฐ ์ํด ASG์ Desired Count๋ฅผ ๋๋ฆฝ๋๋ค.
- ASG๋ Desired Count ๋ณํ๋ฅผ ๊ฐ์งํ๊ณ ์ ๋ ธ๋๋ฅผ ํ๋ก๋น์ ๋ํฉ๋๋ค.
- ์ ๋ ธ๋๊ฐ Ready ์ํ๊ฐ ๋๋ฉด Pending ์ํ์๋ Pod๊ฐ ์ ์์ ์ผ๋ก ์ค์ผ์ค๋ง๋ฉ๋๋ค.
Scale In
- ํ๋์ ์คํ์ด ์ข ๋ฃ๋๊ฑฐ๋ HPA์ ์ํด ํ๋๊ฐ Scale in ๋๋ ๊ฒฝ์ฐ
- CA๋ ์๋์ ๋ชจ๋ ์กฐ๊ฑด์ ์ถฉ์กฑํ๋ ๋
ธ๋๋ฅผ ๋ถํ์ํ(unneeded)ํ ๋
ธ๋๋ก ๊ฐ์ฃผํฉ๋๋ค.
- CA๋ ์ฃผ๊ธฐ์ ์ผ๋ก ๊ฐ ๋
ธ๋์ CPU ๋ฐ MEM์ ์ฌ์ฉ๋ฅ ์ ํ๊ฐํฉ๋๋ค.
ํด๋น ๋ ธ๋์์ ์คํ ์ค์ธ ๋ชจ๋ ํ๋์ CPU request์ ํฉ๊ณผ MEM requests์ ํฉ์ด ๋ ธ๋์ ์์์ ์๊ณ๊ฐ(๊ธฐ๋ณธ์ ์๊ณ๊ฐ์ 50%)๋ฏธ๋ง์ธ์ง ํ์ธํฉ๋๋ค. - ํด๋น ๋ ธ๋์์ ์คํ๋๋ ๋ชจ๋ ํ๋๊ฐ ๋ค๋ฅธ ๋ ธ๋๋ก ์ด๋ ๊ฐ๋ฅํ์ง ํ์ธํฉ๋๋ค.
- ํด๋น ๋ ธ๋์ โscale-down-disabled : trueโ ์ฃผ์์ด ์๋์ง ํ์ธํฉ๋๋ค.
- CA๋ ์ฃผ๊ธฐ์ ์ผ๋ก ๊ฐ ๋
ธ๋์ CPU ๋ฐ MEM์ ์ฌ์ฉ๋ฅ ์ ํ๊ฐํฉ๋๋ค.
- ๋ถํ์ํ ๋ ธ๋๊ฐ ์ผ์ ์๊ฐ(๊ธฐ๋ณธ ๊ฐ์ 10๋ถ) ์ด์ ์ ์ง๋๋ ๊ฒฝ์ฐ CA๋ pod๋ค์ evicting(์ถ์ถ)ํ๊ณ taintingํ์ฌ ๋ ธ๋๋ฅผ ๋น์๋๋ค.
- ๋น์์ง ๋ ธ๋๋ฅผ ์ ๊ฑฐํฉ๋๋ค.
- ๋ ธ๋๊ฐ ์ข ๋ฃ๋๋ฉด CA๋ ASG์ Desired Count๋ฅผ ์กฐ์ ํฉ๋๋ค.
Karpenter์ ๋์ ๋ฐฉ์
Scale Out
- K8S ํด๋ฌ์คํฐ์ ํ๋๋ฅผ ๋ฐฐ์นํ ์ถฉ๋ถํ ์ฉ๋์ด ์์ด Pending ์ํ์ ํ๋๊ฐ ๋ฐ์ํ์ฌ Karpenter๋ Pending ์ํ์ธ ํ๋๋ฅผ ๊ฐ์งํฉ๋๋ค.
- Karpenter๋ ํ๋๋ฅผ ์ค์ผ์ค๋งํ๊ธฐ ์ํด ํ์ํ ์ปดํจํ ์ฉ๋์ ์ฐ์ ํ๊ณ EC2 API๋ฅผ ์ง์ ํธ์ถํ์ฌ ๊ฐ์ฅ ์ ๋ ดํ ๋ ธ๋๋ฅผ ์ฐ์ ์ ์ผ๋ก ํ๋ก๋น์ ๋ํฉ๋๋ค.
- ์ ๋ ธ๋๊ฐ Ready ์ํ๊ฐ ๋๋ฉด Pending ์ํ์๋ Pod๊ฐ ์ ์์ ์ผ๋ก ์ค์ผ์ค๋ง๋ฉ๋๋ค.
Scale In
- Karpenter๋ ๋ฆฌ์์ค ์ฌ์ฉ๋ฅ ์ ์ต์ ํํ๊ณ ๋์์ ๋น์ฉ์ ์ ๊ฐํ๊ธฐ ์ํด ๋ ธ๋ ฅํฉ๋๋ค. ์ด๋ฅผ Workload Consolidation์ด๋ผ๊ณ ํฉ๋๋ค.
- Karpenter๋ ๋ค์์ ์๋ณํ์ฌ ๋น์ฉ์ ์ ๊ทน์ ์ผ๋ก ์ค์ด๊ธฐ ์ํด ๋
ธ๋ ฅํฉ๋๋ค.
- ๋ ธ๋๊ฐ ๋น์ด์๋ ๊ฒฝ์ฐ ๋ ธ๋๋ฅผ ์ ๊ฑฐ(Deletion)
- ์ํฌ๋ก๋๊ฐ ๋ค๋ฅธ ๋ ธ๋์์ ์คํ ๊ฐ๋ฅํ ๊ฒฝ์ฐ ๋ ธ๋๋ฅผ ์ ๊ฑฐ(Deletion)
- ์ํฌ๋ก๋์ ๋ณ๊ฒฝ(ํ๋ ์ค์ผ์ผ๋ง ๋๋ ์ํฌ๋ก๋์ ์ข ๋ฃ ๋ฑ)์ผ๋ก ๋ ์ ๋ ดํ ๋ ธ๋๋ก ๊ต์ฒด ๊ฐ๋ฅํ ๊ฒฝ์ฐ ๋ ธ๋๋ฅผ ๊ต์ฒด(Replace)
'๐ Container & K8S > Kubernetes' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[K8S] kubectl ๋ช ๋ น์ด ์ ๋ฆฌ (0) | 2023.03.14 |
---|