개발 창고/Server

Kubernetes Job: 완전 종료 보장형 일회성 작업 관리

Royzero 2025. 8. 8. 22:00
반응형

개요

Kubernetes에서 Job 리소스는 일회성(One-time) 작업 또는 반복되지 않는 작업을 실행할 때 사용됩니다. 배치 처리, 마이그레이션, 데이터 변환 등 반드시 완료되어야 하는 작업에 매우 유용합니다. 이 문서에서는 Job의 개념부터 동작 방식, 구성 예제, 실무에서의 모범 사례까지 자세히 설명합니다.


1. Job이란 무엇인가?

Job은 하나 이상의 Pod를 생성해 작업을 수행하고, 그 작업이 완료될 때까지 감시하는 리소스입니다.

  • Pod가 성공적으로 완료되면 Job도 완료로 간주됨
  • 실패한 경우 재시도 정책에 따라 다시 실행
  • 주로 일회성 데이터 처리에 사용

✅ 예시 상황

  • DB 마이그레이션 스크립트 실행
  • 통계 처리용 파이썬 배치
  • 비정기적으로 수행되는 백업 또는 리포트 생성

2. Job의 동작 방식

Job은 다음과 같은 방식으로 동작합니다:

  1. Job 생성 시 지정된 수의 Pod를 생성합니다.
  2. 각 Pod는 컨테이너 내에서 주어진 작업을 실행합니다.
  3. 모든 Pod가 정상 종료되면 Job도 완료됩니다.
  4. 실패한 Pod는 설정된 backoffLimit만큼 재시도됩니다.

3. 기본 Job 구성 예시

apiVersion: batch/v1
kind: Job
metadata:
  name: pi-job
spec:
  template:
    spec:
      containers:
      - name: pi
        image: perl
        command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(200)"]
      restartPolicy: Never
  backoffLimit: 4

주요 속성 설명

  • template: 실행될 Pod의 템플릿 정의
  • restartPolicy: 일반적으로 Job은 Never 또는 OnFailure 설정
  • backoffLimit: 실패 시 최대 재시도 횟수

4. 병렬 Job 구성

하나의 작업을 병렬로 여러 개 실행해야 할 경우:

spec:
  completions: 5
  parallelism: 2
  • completions: 총 완료해야 할 작업 수
  • parallelism: 동시에 실행될 Pod 수

5. Job의 상태 확인 및 관리

kubectl get jobs
kubectl describe job pi-job

상태를 통해 성공 횟수, 실패 횟수, 남은 Pod 등을 확인할 수 있습니다.


6. Job 삭제와 후처리

Job을 삭제해도 관련 Pod는 기본적으로 유지됩니다. 자동 정리를 원한다면 ttlSecondsAfterFinished 속성을 사용하세요.

spec:
  ttlSecondsAfterFinished: 100

100초 후에 Job 및 관련 리소스 자동 삭제


7. 실무에서 주의할 점

항목 설명
실패 제한 backoffLimit 설정을 적절히 하여 무한 재시도를 방지
로그 수집 Job은 ephemeral한 Pod이므로 로그 수집 시스템과 연동 필요
컨테이너 종료 코드 Job 성공 여부는 종료 코드에 따라 판단됨

8. FAQ (Answer Engine Optimization)

Q1. Job은 자동으로 반복되나요?
아니요. Job은 1회성 작업입니다. 반복이 필요하다면 CronJob을 사용하세요.

Q2. 실패한 Pod는 언제 삭제되나요?
기본적으로 삭제되지 않습니다. 수동 삭제하거나 TTL 설정이 필요합니다.

Q3. 로그는 어디서 확인하나요?
Job이 생성한 Pod 이름을 찾아 kubectl logs <pod-name> 명령어로 확인합니다.


9. 요약 및 마무리

항목 설명
목적 반드시 완료되어야 하는 1회성 작업 실행
재시도 정책 backoffLimit, restartPolicy 설정으로 제어
병렬 실행 completions, parallelism 옵션으로 가능
후처리 ttlSecondsAfterFinished 설정으로 자동 삭제 가능

Job은 Kubernetes에서 신뢰성 있는 일회성 작업 실행을 위한 표준 도구입니다. 적절한 설정과 모니터링으로 안정적인 워크로드 실행이 가능합니다.


반응형