피드로 돌아가기
Kubernetes BlogDevOps
원문 읽기
Kubernetes v1.34가 Pod Replacement Policy를 GA로 승격하여 Job 실행 중 동시 다중 Pod 재생성으로 인한 중복 작업 등록 및 불필요한 클러스터 스케일업 방지
Kubernetes v1.34: Pod Replacement Policy for Jobs Goes GA
AI 요약
Context
Kubernetes Job 컨트롤러는 기본적으로 Pod가 실패하거나 삭제되는 즉시 새로운 Pod를 재생성하는데, 이로 인해 Indexed Jobs에서 동일 인덱스에 대해 여러 Pod이 동시에 실행될 수 있다. TensorFlow, JAX 같은 머신러닝 프레임워크는 워커 인덱스당 정확히 하나의 Pod만 기대하므로 "Duplicate task registration" 에러가 발생하고, 불필요한 클러스터 스케일업 및 스케줄링 지연이 발생한다.
Technical Solution
- Job 스펙에
.spec.podReplacementPolicy필드 추가:TerminatingOrFailed(기본값) 또는Failed중 선택 TerminatingOrFailed정책: Pod가 terminating 상태에 진입하는 즉시 신규 Pod 생성 (기존 동작)Failed정책: Pod가 완전히 종료되고 Failed 상태로 전환된 후에만 신규 Pod 생성- Pod Failure Policy 적용 시
podReplacementPolicy기본값은 자동으로Failed로 설정되며 다른 값 지정 불가 - Job의
.status.terminating필드로 현재 terminating 상태인 Pod 수를 확인 가능
Key Takeaway
Kubernetes 워크로드 스케줄러는 Pod 재생성 타이밍을 세밀하게 제어함으로써 머신러닝 프레임워크의 동시성 요구사항을 만족시키고, 불필요한 리소스 할당 및 quota 우회를 방지할 수 있다.
실천 포인트
TensorFlow나 JAX 기반 분산 머신러닝 작업을 Kubernetes Job으로 실행할 때 `spec.podReplacementPolicy: Failed`를 설정하면, 기존 Pod이 완전히 종료된 후에만 신규 Pod을 생성하도록 제어하여 워커 인덱스당 단일 Pod 보장 및 "Duplicate task registration" 에러 방지가 가능하다.