Job 워크로드를 위한 EKS Node Group 오토스케일링 도입기
데브옵스
Job 워크로드를 위한 EKS Node Group 오토스케일링 도입기
두줄요약
Job 워크로드를 위한 EKS Node Group 오토스케일링 적용 과정을 정리한 글입니다. Bin-packing과 강제 종료 방지, kubelet maxPods 조정까지 함께 다뤘습니다.
핵심 내용
- EKS에서 Job 워크로드가 장시간 중단되기 어려워 Node Group 오토스케일링이 까다로운 문제
- 전용 Node Group 분리, PodAffinity 기반 Bin-packing, do-not-disrupt Annotation으로 Scale-in과 강제 종료를 제어
- Production 적용 후 kubelet 과부하, Image Pull 실패, EBS Volume Throttling, CNI IP 할당 지연 등 추가 병목 발생
해결 방법
- Kyverno로 Argo Workflow Pod에 group: job 라벨과 PodAffinity, Karpenter do-not-disrupt Annotation 일괄 주입
- Cluster Autoscaler와 Karpenter 사용 시 Job Pod가 있는 Node는 Scale-in 대상에서 제외
- kubelet maxPods를 낮춰 한 Node로의 Pod 쏠림을 완화