DevLog

엔지니어링 블로그를 한 곳에서 탐색하고, 최근 발행 흐름을 빠르게 파악할 수 있는 서비스 입니다.

Quick Links

  • Latest Feed
  • Engineering Directory

Support

  • 소개
  • 개인정보처리방침

Contribute

  • 원하는 블로그 추가 (준비 중)
  • Feedback

© 2026 DevLog Inc. All rights reserved.

본 사이트는 공개 RSS 피드를 통해 콘텐츠를 수집하며, 모든 콘텐츠의 저작권은 원저작자에게 있습니다.

Back to Feed
Read Original

Contents

Continue Reading

  • More from 당근
  • Related reads#EKS
#DevOps

Our Journey to Autoscaling EKS Node Groups for Job Workloads

Our Journey to Autoscaling EKS Node Groups for Job Workloads
01

Summary

중단되면 끝장인 Job 워크로드, EKS에서 어떻게 오토스케일링 할까?

당근(Karrot) SRE 팀이 빈 패킹과 Kyverno를 활용해 비용과 안정성을 모두 잡은 기술적 실전 가이드

중단이 불가능한 Job 워크로드의 특성상 EKS 오토스케일링은 까다로운 과제입니다. 당근 SRE 팀은 전용 노드 그룹 분리와 PodAffinity 기반의 빈 패킹 전략을 통해 노드 효율을 극대화하고, 작업 중단을 방지하는 자동화된 메커니즘을 구축했습니다. 이 과정에서 겪은 성능 병목 현상과 해결책까지 시니어 엔지니어의 실전 노하우를 담고 있습니다.

  • 01Job 워크로드 전용 노드 그룹 분리를 통한 일반 서버 워크로드와의 영향도 차단
  • 02PodAffinity를 활용하여 별도 스케줄러 없이 구현한 효율적인 빈 패킹(Bin-packing) 기법
  • 03Kyverno 정책 엔진을 사용해 'do-not-disrupt' 어노테이션을 자동으로 주입하여 작업 보호
  • 04ASG의 AZ Rebalancing 비활성화를 통해 예상치 못한 노드 삭제 및 작업 중단 방지
  • 05kubelet의 maxPods 및 registryPullQPS 튜닝으로 대규모 배치 생성 시의 병목 현상 해결

+RECOMMENDATION

대규모 배치 작업이나 AI 학습 등 중단 시 매몰 비용이 큰 워크로드를 EKS에서 운영하는 인프라 엔지니어에게 추천합니다. 특히 Karpenter나 Cluster Autoscaler 도입 시 발생할 수 있는 노드 스케일인 이슈를 사전에 방어하고 싶은 팀에게 매우 유용한 사례입니다.

The Problem

Job 워크로드는 실행 중단 시 리소스 낭비가 심해 오토스케일링 도입이 어렵고, 고정된 노드 그룹 운영 시 비용 효율성과 처리 성능 사이의 트레이드오프가 발생합니다.

The Solution

전용 노드 그룹 분리, PodAffinity를 이용한 빈 패킹(Bin-packing) 전략, Kyverno를 통한 스케일인 제외 어노테이션 자동 부여, 그리고 kubelet 설정 최적화를 통해 안정적인 오토스케일링을 구현했습니다.

The Result

Job 워크로드의 특성을 유지하면서도 부하에 따른 유연한 노드 증설이 가능해졌으며, 수동 관리 부담을 줄이고 비용 최적화와 작업 처리의 안정성을 동시에 확보했습니다.

Trade-off

빈 패킹으로 인해 특정 노드에 부하가 집중되면서 kubelet 과부하, 이미지 풀링 지연, EBS 스로틀링 등의 사이드 이펙트가 발생하여 세밀한 파라미터 튜닝이 추가로 요구되었습니다.

03

Key Concepts

Concept · 01

Bin-packing

리소스를 효율적으로 사용하기 위해 컨테이너를 여러 노드에 고르게 분산하는 대신, 가능한 적은 수의 노드에 밀집시켜 스케줄링하는 전략입니다.

  • PodAffinity를 활용해 새로운 Job이 기존 Job이 실행 중인 노드에 우선 배치되도록 유도했습니다.
  • 노드 활용도를 높여 스케일인 시 빈 노드가 발생할 확률을 극대화했습니다.
Concept · 02

Kyverno

쿠버네티스 네이티브 정책 엔진으로, 클러스터 내 리소스의 생성 및 변경을 제어하고 설정을 자동화하는 도구입니다.

  • 모든 Job Pod에 스케일인 방지 어노테이션을 일괄적으로 자동 삽입하는 데 사용되었습니다.
  • Argo Workflow 등 특정 조건에 맞는 Pod에만 선택적으로 정책을 적용했습니다.
Concept · 03

Karpenter / Cluster Autoscaler

쿠버네티스 클러스터의 부하에 따라 워커 노드 수를 자동으로 조절하는 오픈소스 노드 오토스케일링 도구입니다.

  • 특정 어노테이션이 있는 Pod가 실행 중인 노드를 삭제 대상에서 제외하는 기능을 활용했습니다.
  • 노드 그룹의 동적 확장을 통해 작업 지연을 방지하고 비용을 최적화했습니다.
Continue reading · same source

당근More from 당근

View all posts from 당근
  • 천만 MAU를 지탱하는 커뮤니티 시스템을 소개해요

    Modular MonolithStreaming SSROpenAPI
    2일 전
  • 혼자 시작해 전국 오픈까지, 당근 레슨/과외 빌딩 로그

    MarketplaceProduct Market FitFunnel Optimization
    2주 전
  • 디자인시스템 팀은 디자인시스템만 잘 만들면 될까

    Design SystemAI in DesignUX Patterns
    1개월 전
  • 당근 200+개 DB 를 옮기는 ELT 플랫폼, DT Platform 을 만든 이야기

    ELTApache SparkApache Airflow
    1개월 전
  • 누구나 찾아볼 수 있는 중고거래 서버 LLM 릴리즈 노트 도입기

    LLMGitHub ActionsNotion
    2개월 전

Related reads#EKS

Explore #EKS
여기어때

EKS + ALB 환경에서 Argo Rollouts 503 에러 없는 카나리 배포 적용기

#EKS2개월 전
당근

Job 워크로드를 위한 EKS Node Group 오토스케일링 도입기

#EKS3개월 전
카카오뱅크·Agentic AI

Agentic AI의 시대, AWS re:Invent 2025 현장을 가다

#EKS4개월 전
여기어때

여기어때 Secret 플랫폼 구축기 Part 2: 시크릿 저장소를 전체 서비스에 적용하기까지

#EKS4개월 전

Source

당근
당근
Engineering Blog

Published · April 16, 2026

Topics

EKSKarpenterKubernetesBin-packingKyverno