목록 보기
Kubernetes Job과 커스텀 컨트롤러를 활용한 배치 처리 경험기
데브옵스

Kubernetes Job과 커스텀 컨트롤러를 활용한 배치 처리 경험기

네이버 D2
네이버 D2
2025년 1월 9일

두줄요약

Kubernetes Job으로 배치 작업을 클러스터에서 병렬 실행하도록 전환한 경험을 공유했습니다. 또한 커스텀 컨트롤러와 Kubebuilder로 순차 실행용 스케줄러를 구현한 방법을 설명했습니다.

핵심 내용

  • Kubernetes Job으로 VM 서버 기반 배치 작업을 클러스터로 옮겨 병렬 실행 효율을 높인 사례
  • Helm으로 Job 템플릿과 values를 분리해 환경별 파라미터를 주입하고 여러 Job을 동시에 실행하는 구성
  • Kubernetes 커스텀 컨트롤러와 Kubebuilder로 Job 실행 상태를 관리하는 가변적 스케줄러 구현 흐름

구조와 흐름

  • Job 오브젝트가 API 서버, etcd, controller manager, scheduler를 거쳐 파드로 실행되는 동작 원리
  • JobScheduler 커스텀 리소스의 Spec에 그룹명을 두고 Status에 실행 순서와 현재 인덱스를 저장하는 설계
  • Reconcile 로직에서 Job 목록 조회, 그룹 필터링, 순서 정렬, 일시정지 해제와 상태 모니터링 수행

선택 이유

  • 독립적인 배치 작업은 Job으로 병렬화해 실행 시간을 줄이기 위한 선택
  • 순차 실행이 필요한 작업은 클러스터 내부 상태를 보며 제어하기 위한 커스텀 컨트롤러 활용
  • 오픈소스 사용이 어렵거나 특수 요구 사항이 있을 때 직접 구현 가능한 방식

주의할 점

  • Job 간 실행 상태를 클러스터 외부에서 실시간 파악하기 어려운 한계
  • 순차 처리나 지연 없는 스케줄링에는 별도 상태 관리 로직 필요
  • 서버 증설 방식은 비용 증가와 자원 비효율 문제를 동반

적용해볼 점

  • 반복 배치가 많아질 때 VM 단일 실행 구조를 Job 기반으로 전환하는 방안
  • Helm values와 --set으로 환경별 배치 파라미터를 유연하게 주입하는 방식
  • 커스텀 리소스와 Reconcile 패턴을 활용한 내부 스케줄러 설계

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...