Kubernetes-native 배치 프레임워크 툴 정리

Volcano

Apache YuniKorn https://yunikorn.apache.org/

  • 리소스 기반 잡 큐를 세밀하게 컨트롤하는 기능 제공

  • Apache YuniKorn**은 Kubernetes 및 YARN 클러스터 환경을 위한 리소스 스케줄러(Resource Scheduler) 프로젝트로, 클라우드 네이티브 애플리케이션의 효율적인 리소스 공유 및 예약 관리를 목적으로 한다.
    CNCF 인큐베이팅 프로젝트이며, Apache 재단 소속이다.

  • 주요 특징

    • 멀티테넌시 지원
      서로 다른 사용자 그룹/워크로드 간에 리소스를 공정하게 분배하고 우선순위를 지정함.
    • 플러그인 구조
      다양한 스케줄링 정책을 쉽게 추가할 수 있는 모듈형 아키텍처.
    • 워크로드 최적화
      Batch, ML, Streaming, Interactive 등의 다양한 워크로드 특성에 맞춘 스케줄링 전략 지원.
    • Resource Fairness & Queuing
      Capacity Scheduler 기반 큐 트리 구조를 사용하여 리소스 공정성 유지.
    • Kubernetes 네이티브 통합
      K8s 스케줄러를 대체하거나 보완할 수 있으며, 스케줄링 인터셉터로 작동 가능.
    • Gang Scheduling
      다수의 작업이 동시에 스케줄되어야 할 경우(예: MPI Job)에 유용.
  • 구성 요소

    • Scheduler Core: 리소스 요청을 받아 정책 기반으로 처리
    • Shim Layer: Kubernetes 또는 YARN 등과의 통합 계층
    • Web UI / REST API: 스케줄링 상태 및 큐 관리 시각화 및 제어
  • 사용 예시

    • Kubernetes 클러스터에서 Spark, Flink, TensorFlow 등 Batch/AI 워크로드 운영 시
    • 다양한 사용자 및 팀 간에 클러스터 리소스를 효율적으로 공유하고자 할 때
    • 자체적인 큐 기반 리소스 정책을 적용하고자 할 때
  • 주요 사용자 사례

Kueue https://kueue.sigs.k8s.io/

  • Kubernetes SIG에서 개발 중인 경량 배치 스케줄러, Job 큐 기반 설계 기능 등 Kubernetes 위에서 동작하는 클라우드 네이티브 배치 작업 큐 툴

  • 주요 기능

    • 작업 큐 관리
      우선순위 기반 Queueing: StrictFIFO, BestEffortFIFO 같은 다양한 전략을 통해 작업을 효율적으로 대기 및 실행합니다.

    • 고급 리소스 관리
      Quota & Fair Sharing: 다중 테넌트 지원을 위해 쿼터 기반 자원 할당과 공정 공유를 설정할 수 있습니다..
      ResourceFlavors: 다양한 노드 유형(x86/ARM, GPU 종류, spot/on-demand 등)에 대응하는 flavor 정의로 리소스를 세분화하고, 유연하게 사용할 수 있습니다.
      Flavor Fungibility: 특정 flavor가 부족할 경우, 대체 가능한 다른 flavor의 자원을 자동으로 사용할 수 있습니다.
      Preemption & Cohorts: 우선순위나 정책에 따라 작업 선점이 가능하며, 코호트 단위 자원 공유 및 제어가 지원됩니다.

    • 폭넓은 통합성
      Kubernetes 에코시스템과 협업:
      kube-scheduler, cluster-autoscaler, kube-controller-manager 등 기존 컴포넌트를 덮어쓰지 않고 complement 합니다.
      지원 워크로드 유형: BatchJob, Kubeflow, RayJob, JobSet, 일반 Pod/PodGroup 등 다양하게 호환됩니다.

    • 운영 및 모니터링
      Prometheus 메트릭: 기본 제공 메트릭으로 큐 상태나 작업 지연 등을 실시간 모니터링 가능 .
      큐 가시성 API: QueueVisibility, VisibilityOnDemand 같은 feature-gate를 통해 대기 중인 작업 상태를 확인 가능.

    • 멀티 클러스터 지원 (MultiKueue)
      중앙 관리 클러스터에서 여러 워커 클러스터로 Workload를 전파하고 실행 클러스터 하나가 작업을 수행하는 구조를 제공합니다. 또한 각 클러스터에 쿼터 기반 Workload 디스패치가 가능 .

    • 설치 및 커맨드라인 도구
      Kubernetes 1.23+ 환경에서 간단히 Helm 또는 kubectl apply로 설치 가능.
      kubectl-kueue (kueuectl): ResourceFlavor, LocalQueue, ClusterQueue, Workload 등을 생성/조회/삭제하는 CLI 도구 제공.

4 Likes