피드로 돌아가기
Kubernetes BlogKubernetes Blog
Backend

Kubernetes v1.35에서 .spec.managedBy 필드가 GA 졸업하며 외부 컨트롤러가 Job 조정을 위임받아 MultiKueue 같은 멀티클러스터 배치 스케줄링 패턴 지원

Kubernetes v1.35: Job Managed By Goes GA

2025년 12월 18일8intermediate

Context

멀티클러스터 배치 스케줄링 아키텍처(예: MultiKueue)에서는 Management Cluster가 Job을 디스패치하되 Pod 실행은 Worker Cluster에서 수행해야 합니다. 기존에는 기본 Job 컨트롤러를 비활성화할 수 없는 경우(Managed Control Plane, 하이브리드 모드)가 많아 Job별 세분화된 제어가 불가능했습니다.

Technical Solution

  • .spec.managedBy 필드 도입: 값을 kubernetes.io/job-controller 이외로 설정하면 기본 Job 컨트롤러가 해당 Job의 조정을 완전히 스킵하도록 변경
  • 외부 컨트롤러 위임 패턴 구현: Management Cluster의 외부 컨트롤러(예: MultiKueue)가 Worker Cluster의 "mirror" Job에서 상태를 복사하여 자신의 Job 조정 담당
  • 불변(immutable) 필드 설정: 일단 .spec.managedBy를 설정하면 런타임 중 컨트롤러 변경 불가능하게 강제하여 Pod 누수나 리소스 누수 방지
  • Job API 검증 규칙 강화: 외부 컨트롤러 준수성 보장을 위해 광범위한 Job 상태 검증 규칙 도입
  • Job별 세분화 제어: Management Cluster에서 일부 Job은 기본 컨트롤러로, 일부 Job은 외부 컨트롤러로 관리하는 하이브리드 운영 가능

Key Takeaway

.spec.managedBy는 Kubernetes 배치 에코시스템에서 컨트롤러 위임의 표준 인터페이스로 확산되고 있으며, 클라우드 환경의 접근 제어 제약과 하이브리드 워크로드 실행 요구를 동시에 해결하는 설계 원칙을 보여줍니다.


멀티클러스터 배치 스케줄링을 구현하는 팀에서 .spec.managedBy 필드를 활용하면 Management Cluster에서 기본 Job 컨트롤러를 비활성화하지 않고도 외부 오케스트레이터(예: MultiKueue)가 Job 상태 동기화와 다중 클러스터 디스패칭을 장악할 수 있으며, 동시에 제어 플레인 관련 작업은 로컬에서 실행하는 유연성을 확보할 수 있습니다.

원문 읽기