
당근(Karrot) SRE 팀이 빈 패킹과 Kyverno를 활용해 비용과 안정성을 모두 잡은 기술적 실전 가이드
중단이 불가능한 Job 워크로드의 특성상 EKS 오토스케일링은 까다로운 과제입니다. 당근 SRE 팀은 전용 노드 그룹 분리와 PodAffinity 기반의 빈 패킹 전략을 통해 노드 효율을 극대화하고, 작업 중단을 방지하는 자동화된 메커니즘을 구축했습니다. 이 과정에서 겪은 성능 병목 현상과 해결책까지 시니어 엔지니어의 실전 노하우를 담고 있습니다.
대규모 배치 작업이나 AI 학습 등 중단 시 매몰 비용이 큰 워크로드를 EKS에서 운영하는 인프라 엔지니어에게 추천합니다. 특히 Karpenter나 Cluster Autoscaler 도입 시 발생할 수 있는 노드 스케일인 이슈를 사전에 방어하고 싶은 팀에게 매우 유용한 사례입니다.
Job 워크로드는 실행 중단 시 리소스 낭비가 심해 오토스케일링 도입이 어렵고, 고정된 노드 그룹 운영 시 비용 효율성과 처리 성능 사이의 트레이드오프가 발생합니다.
전용 노드 그룹 분리, PodAffinity를 이용한 빈 패킹(Bin-packing) 전략, Kyverno를 통한 스케일인 제외 어노테이션 자동 부여, 그리고 kubelet 설정 최적화를 통해 안정적인 오토스케일링을 구현했습니다.
Job 워크로드의 특성을 유지하면서도 부하에 따른 유연한 노드 증설이 가능해졌으며, 수동 관리 부담을 줄이고 비용 최적화와 작업 처리의 안정성을 동시에 확보했습니다.
Trade-off
빈 패킹으로 인해 특정 노드에 부하가 집중되면서 kubelet 과부하, 이미지 풀링 지연, EBS 스로틀링 등의 사이드 이펙트가 발생하여 세밀한 파라미터 튜닝이 추가로 요구되었습니다.
리소스를 효율적으로 사용하기 위해 컨테이너를 여러 노드에 고르게 분산하는 대신, 가능한 적은 수의 노드에 밀집시켜 스케줄링하는 전략입니다.
쿠버네티스 네이티브 정책 엔진으로, 클러스터 내 리소스의 생성 및 변경을 제어하고 설정을 자동화하는 도구입니다.
쿠버네티스 클러스터의 부하에 따라 워커 노드 수를 자동으로 조절하는 오픈소스 노드 오토스케일링 도구입니다.




