Lablup Seminar Day Q2 2026

Kubernetes 경쟁과 지원이 양립할 수 있는 이유

Kubernetes 역할의 변화와 Backend.AI의 위치

Lablup Seminar Day Q2 2026

구현회

Lablup Seminar Day Q2 2026

목차

본문

  • 이 발표의 동기
  • Kubernetes의 역할 변화
  • K8s 기본 Scheduler의 GPU 한계
  • K8s Native GPU Scheduling
  • Slurm: K8s 밖의 세계
  • Backend.AI의 위치
  • K8s 통합이 필요한 이유
  • 첫 시도: Backend.AI Lagrange
  • 다음 단계: DooD on K8s
Lablup Seminar Day Q2 2026

이 발표의 동기

Lablup Seminar Day Q2 2026

"Backend.AI는 Kubernetes와 경쟁해왔는데, 이제 와서 통합한다고? 패배를 인정하는 건가?"

  • 2015년의 K8s와 2026년의 K8s는 다른 제품이나 마찬가지
  • K8s가 Container Orchestrator였을 때는 경쟁 구도가 맞았음
  • Infra OS가 된 K8s는 경쟁 대상이 아니라 역할 분담의 문제
  • K8s의 Platform을 활용하면서, GPU Scheduling은 우리가 더 잘하겠다는 것
Lablup Seminar Day Q2 2026

"그런데 K8s Ecosystem에 이미 GPU Scheduling Solution이 많지 않나?"

  • GPU Workload를 K8s에 올리려는 시도가 많지만,
    전부 K8s 기본 Scheduler를 우회하거나 대체
  • K8s가 "AI의 OS"로 불리는 이유는 Scheduler가 아니라 API Server + CRD + 운영 편의
  • 기존 Solution들도 각각 한계가 있음 (Fractional GPU, Hardware Agnostic, Multi-Tenancy 등)
  • Backend.AI도 같은 맥락에서 K8s Platform을 활용하되, GPU Scheduling은 독자적으로 가져감
Lablup Seminar Day Q2 2026

Kubernetes의 역할 변화

Orchestrator에서 Infrastructure OS로

Lablup Seminar Day Q2 2026

K8s 10년: 세 번의 전환

  • 2015-2020: Microservices Era
    Stateless 웹 서비스 배포용 Container Orchestrator
    핵심 Primitive: Deployment, Service, Ingress
  • 2020-2024: Data + GenAI Era
    CRD + Operator로 K8s API가
    'Infra 선언의 표준 Interface'로 전환
    GPU Device Plugin(2017) → DRA GA(2025)
    → JobSet, LeaderWorkerSet
  • 2025+: Agentic Era
    장기 실행 AI Agent Workload까지 K8s 범위에 포함
    CNCF 공식 명명: "AI의 de facto OS"
Lablup Seminar Day Q2 2026

CNCF 2025 Annual Survey

82%
K8s Production
사용률
(2023: 66%)
66%
GenAI Inference를
K8s 위에서 운영
98%
Cloud Native
기술 도입률
47%
도입 1위 장벽:
개발팀 문화 변화
(첫 비기술적 1위)
Lablup Seminar Day Q2 2026

K8s가 GPU를 다루기 시작한 과정

시기 Milestone
2017 Device Plugin API. GPU를 nvidia.com/gpu: N 정수로 요청
2022 Kueue, Volcano 등 Batch/GPU Scheduler가 K8s 위에 등장
2025.03 JobSet 소개: 분산 Training Topology를 K8s Native로 표현 (Alpha)
2025.08 DRA GA (K8s 1.34): GPU를 속성 기반으로 요청, Topology 인식
2026.01 LeaderWorkerSet v0.8: 분산 Inference의 Super-Pod 추상화
2026.03 NVIDIA DRA Driver를 kubernetes-sigs에 기증
Lablup Seminar Day Q2 2026

GPU Workload Scheduling

K8s 기본 Scheduler의 한계와 이를 보완하려는 생태계

Lablup Seminar Day Q2 2026

K8s 기본 Scheduler의 GPU 한계

  • Fractional GPU 기능 미지원
    • nvidia.com/gpu: N 정수 단위로만 요청 가능
    • 2017년 Device Plugin 이후 9년째 이 구조
  • GPU Topology 미인식
    • Topology Manager는 kubelet Level이라 Scheduler가 NUMA를 모름
    • Node에 배치한 뒤 kubelet이 거부하는 구조 (TopologyAffinityError)
    • NVLink/NVSwitch 인식은 범위 밖
  • Gang Scheduling 없음
    • 분산 Training에서 8 GPU 중 5개만 할당되면 나머지를 기다리며 Deadlock
    • Native Gang Scheduling (KEP-4671)은 v1.35 Alpha
  • DRA (Dynamic Resource Allocation)
    • K8s 1.34에서 GA. 속성 기반 GPU 요청, Topology 인식, 공유 할당
    • NVIDIA DRA Driver를 KubeCon EU 2026에서 kubernetes-sigs에 기증
    • 하지만 아직 초기: GPU Health Monitoring은 Alpha, 기존 Device Plugin에서 Migration 필요
Lablup Seminar Day Q2 2026

Kueue (K8s SIG)

Job Queueing + Admission Control. 기본 Scheduler를 대체하지 않고 "언제 들여보낼지"만 관리.

  • Architecture: LocalQueue → ClusterQueue → Cohort 구조
    • ResourceFlavor로 GPU Type 구분 (A100 vs H100 vs L40S)
    • Cohort 간 Quota 공유 (유휴 GPU를 다른 팀이 빌려 씀)
  • GPU 관련 기능: Gang Admission, Multi-Flavor 인식, Priority 기반 Preemption
  • 채택: GKE 공식 추천, CoreWeave 채택
  • 한계: Fractional GPU는 범위 밖. Scheduler 대체가 아닌 Admission Layer. Topology-Aware Scheduling(TAS) 지원
Lablup Seminar Day Q2 2026

Volcano (CNCF Incubating)

자체 Scheduler를 추가하거나 대체하는 HPC/Batch 특화 Solution.

  • Architecture: volcano-scheduler를 기존 kube-scheduler와 병렬 운영 (또는 대체)
    • Queue CRD + PodGroup CRD 기반
  • GPU 관련 기능: Gang Scheduling, DRF, Network Topology 인식
  • 강점: HPC/Batch Style Workload에 성숙
  • 한계: 무거움, 기존 K8s Scheduler와 공존이 복잡
Lablup Seminar Day Q2 2026

KAI Scheduler (NVIDIA, 구 Run:ai)

2025.04 Open Source. GPU에 가장 특화된 Scheduler.

  • Architecture: 기존 kube-scheduler와 병렬 운영
    • 계층적 Quota (Department → Team)
  • GPU 관련 기능: Fractional GPU, Gang Scheduling, Bin Packing, Preemption
    • K8s Native Solution 중 Fractional GPU를 가장 성숙하게 지원
  • 채택: NVIDIA 생태계 중심
  • 한계: Community가 아직 얇음, NVIDIA 종속 우려
Lablup Seminar Day Q2 2026

K8s GPU Scheduling 비교

기능 K8s 기본 Kueue Volcano KAI
Fractional GPU X X O
Gang Scheduling O O O
GPU Topology 인식 X O (TAS) O
Multi-Tenant Quota O O O
K8s Scheduler 교체 - 불필요 선택 불필요
Production 성숙도 높음 중간 높음 초기
Hardware Agnostic - O O X (NVIDIA)
Lablup Seminar Day Q2 2026

공통점: 전부 K8s 기본 Scheduler를 피한다

Scheduler를 감쌈

  • Kueue: 기본 Scheduler 앞단에서 Admission만 Control. "언제 들여보낼지"만 결정

Scheduler를 대체

  • Volcano: 자체 Scheduling Engine (volcano-scheduler, 병렬 또는 대체)
  • KAI: 자체 Scheduling + Fractional GPU + 계층 Quota

Scheduler 위에서 위임

  • Kubeflow Trainer V2, KubeRay: Kueue/Volcano/KAI에 Scheduling을 위임

Scheduler를 완전히 무시

  • Slurm (Slinky): K8s 위에서 돌되, Slurm이 직접 Scheduling
Lablup Seminar Day Q2 2026

Slurm

K8s Scheduler를 완전히 무시하는 접근

Lablup Seminar Day Q2 2026

Slurm: HPC의 De Facto Standard

강점

  • 2002년 LLNL에서 시작, 20년+ 검증
  • TOP500 Supercomputer의 50%+ 에서 사용
  • 12만 Node 규모까지 검증
  • GPU GRES, Fair-Share, Backfill Scheduling 성숙
  • 2025.12 NVIDIA가 SchedMD 인수

Slurm × K8s Bridge

  • Slinky v1.0 (2025.11): Slurm-on-K8s Operator
  • K8s 위 배포, Scheduling은 Slurm이 전담
  • K8s Scheduler를 완전히 우회하는 또 다른 사례

한계

  • Batch Scheduler 설계: Inference/Serving 부적합
  • Load Balancing, Autoscaling, Service Discovery 없음
  • Rolling Deployment, Health Check 미지원
  • 정적 Cluster 전제: Elastic Scaling 부적합
  • Container Native가 아님
  • Multi-Tenancy 제한적 (Linux 계정 기반)

결과

Training + Serving을 모두 해야 하는 조직은 결국 두 개의 Infra를 운영해야 함

Lablup Seminar Day Q2 2026

Backend.AI

K8s 이전부터 GPU Cluster를 Multi-Tenant로 운영해온 Platform

Lablup Seminar Day Q2 2026

Backend.AI 핵심 기술

fGPU (특허)

  • Software 기반 Container Level GPU 가상화
  • Hardware(MIG)에 의존하지 않고 GPU를 분할
  • Consumer GPU(RTX Series)까지 지원
  • K8s가 나오기 전부터 "정수 단위 GPU" 문제를 자체적으로 해결

Gang Scheduling

  • Session 내 모든 Kernel을 Atomic하게 할당 (All-or-Nothing)
  • Backend.AI 자체 Scheduler가 Application Level에서 Atomicity 보장

Sokovan Scheduler

  • NUMA-Aware Resource Mapping: CPU, GPU, Memory의 물리적 근접성 최적화
  • 자동 유휴 자원 회수: GPU 사용률 0% 10분, Network 무활동 1시간 등 조건별
  • DRF(Dominant Resource Fairness)의 GPU 확장

Multi-Node Session

  • ClusterMode.MULTI_NODE로 여러 Node에 걸친 분산 Session
  • Main Kernel + Sub Kernel 구조, SSH Keypair 기반 Inter-Node 통신
  • MPI/NCCL 분산 Training 지원
Lablup Seminar Day Q2 2026

Backend.AI가 다른 점

Hardware Agnostic

  • NVIDIA CUDA, AMD ROCm, Intel Gaudi, Google TPU, Graphcore IPU, Rebellions, FuriosaAI, HyperAccel 등 12종+ 지원

K8s 없이 동작

  • Docker Backend만으로 단일 Server부터 Cluster까지 운영 가능. K8s를 전제하지 않는 독립 Platform

Multi-Tenancy가 설계 원점

  • 사용자/그룹별 Quota, 정책 기반 자원 관리. "여러 팀이 GPU Cluster를 나눠 쓰는 상황"을 처음부터 전제

Session Model

  • Interactive(Notebook), Batch Training, Model Serving을 하나의 Session 추상화로 통합
Lablup Seminar Day Q2 2026

현실적 한계

고객은 이미 K8s Cluster를 운영하고 있다.

  • Backend.AI가 K8s와 통합되지 않으면 별도 Infra를 구축해야 함
  • K8s Ecosystem 도구들(Prometheus, Grafana, ArgoCD, KServe)과 자연스럽게 연결되지 않음
  • kubectl이라는 공통 언어를 쓸 수 없음
  • Kueue, KAI, Kubeflow 등이 빠르게 성숙하면서, "K8s Native가 아닌" Solution의 설명 비용이 계속 올라가는 중
Lablup Seminar Day Q2 2026

K8s 통합이 필요한 이유

Backend.AI의 Scheduling Intelligence × K8s의 Platform

Lablup Seminar Day Q2 2026

Backend.AI의 Scheduling Intelligence와 K8s의 Platform 역할을 어떻게 결합할 것인가?

  • 고객의 기존 K8s Infra와 공존
  • K8s Ecosystem 도구(Monitoring, GitOps, Service Mesh) 활용
  • kubectl이라는 공통 언어 사용
  • fGPU, Sokovan, Multi-Tenancy의 차별점 유지
  • 특정 Hardware Vendor에 종속되지 않는 구조 유지
  • 단순히 "K8s 위에 올리자"도 아니고 "K8s Scheduler를 대체하자"도 아님
Lablup Seminar Day Q2 2026

첫 시도: Backend.AI Lagrange

Virtual Kubelet Bridge

Lablup Seminar Day Q2 2026

Virtual Kubelet

개념

  • 물리 Node 없이 K8s API Server에 "가상 Node"를 등록
  • K8s Scheduler 입장에서는 그냥 Node로 보이지만, 뒤에 있는 Computing Resource는 다른 System
  • Pod Spec을 받아서 Provider별 API로 변환

채택 사례

  • AWS Fargate
  • Azure Container Instances
  • Alibaba Cloud ECI
  • HashiCorp Nomad
  • InterLink (Slurm/HTCondor 연결)

Project 현황

  • CNCF Sandbox (2018.12~)
  • v1.12.0 (2025.01)
  • Go 93.7%, Apache 2.0
  • 14 Providers
  • Incubating으로 승급하지는 못한 상태
Lablup Seminar Day Q2 2026

Lagrange Architecture

Lagrange Architecture

Lablup Seminar Day Q2 2026

Lagrange: 성과와 한계

해결

  • kubectl로 Backend.AI Resource 확인
  • Model Serving이 K8s Service로 자동 노출
  • GPU/Accelerator(CUDA, ROCm, Fractional Shares)가 K8s Resource Model로 표현
  • Prometheus Metric, OpenTelemetry Tracing 내장

설계 철학

  • Backend.AI가 Source of Truth
  • K8s는 "View"
  • Scheduling 결과를 K8s에 "투영"하는 구조

남은 한계

  • 두 Cluster를 따로 운영 (Backend.AI Cluster + K8s Cluster)
  • 중간에 Bridge까지 있어서 운영 복잡도가 높음
  • 고객 입장: "K8s Cluster 옆에 Backend.AI Cluster가 따로 있고, 그걸 연결하는 Bridge도 있다"

그래서

  • 이 경험을 바탕으로 다음 단계의 통합 방향이 나옴
Lablup Seminar Day Q2 2026

다음 단계

K8s 위에 배포하되, K8s에 종속되지 않기

Lablup Seminar Day Q2 2026

핵심 아이디어

Backend.AI Component가 K8s 위에 직접 배포되지만, GPU Workload 자체는 K8s Scheduling을 타지 않는다.

Component 배포 방식 역할
Manager K8s Deployment Self-Healing, Rolling Update, Service Discovery
PostgreSQL, etcd, Redis StatefulSet Persistent State (HA 구성)
Agent GPU Node마다 DaemonSet 해당 Node의 GPU Resource를 전부 점유
Kernel/Session Agent가 Host에 DooD로 직접 생성 K8s에 Pod으로 보이지 않음
Storage Proxy 각 Node마다 DaemonSet Host에 Storage를 미리 Mount
Lablup Seminar Day Q2 2026

Docker-out-of-Docker (DooD) Pattern

DooD Architecture

Lablup Seminar Day Q2 2026

K8s의 역할을 선별

활용하는 것

  • 배포 (Deployment, DaemonSet, StatefulSet)
  • Service Discovery
  • Monitoring (Prometheus)
  • Networking Infra
  • Helm Chart 기반 설치/업그레이드

활용하지 않는 것

  • GPU Workload Scheduling
  • GPU Workload Lifecycle 관리
Lablup Seminar Day Q2 2026

고객 입장에서

Workload 관리 주체
CPU Workload K8s Scheduler
GPU Workload Backend.AI (Sokovan + fGPU)

외부에서 보면 하나의 Cluster. 내부적으로는 역할이 나뉨.

K8s의 "Orchestrator 역할"은 배제하고, "Infra OS 역할"만 활용.

Lablup Seminar Day Q2 2026

어려운 점: Multi-Node Session Networking

  • Docker Swarm Overlay Network로 Multi-Node Kernel 간 통신
    • K8s CNI와 별도의 CIDR Range 사용 (IP 충돌 방지)
    • Multi-Node Session에서 Main Kernel과 Sub Kernel 간 SSH/MPI 통신
  • K8s CNI 공존: Agent Pod은 K8s Network(hostNetwork), Kernel Container는 Docker Swarm Network
  • 향후 containerd 전환 시: CNI Direct Invocation으로 Kernel Networking 관리 (Phase 3)
Lablup Seminar Day Q2 2026

남은 과제

  • Storage Mount Agent가 DooD로 띄운 Kernel Container가 Storage에 접근해야 함. Host에 NFS를 미리 Mount하고, Kernel Container가 그 Mount Point를 Bind Mount로 사용
  • CNI 공존 K8s CNI(Calico, Cilium 등)와 Docker Swarm Overlay Network의 공존. IP Range 충돌, Routing Table 간섭 여부를 검증해야 함
  • 보안 경계 Agent Pod은 privileged + Docker Socket 접근. readOnlyRootFilesystem, seccomp Profile 적용 권장. GPU Node Taint로 비Backend.AI Workload 차단
  • Container Runtime 전환 Phase 1은 Docker(검증됨, Swarm Overlay 내장), 장기적으로 containerd 전환 (K8s Standard, Docker Daemon Overhead 제거)
Lablup Seminar Day Q2 2026

Lagrange vs. 다음 단계

항목 Lagrange (Virtual Kubelet) 다음 단계 (DooD on K8s)
Cluster 구성 Backend.AI + K8s 별도 운영 K8s Cluster 하나
Bridge Virtual Kubelet 기반 Bridge 필요 불필요
GPU Workload 가시성 K8s Pod으로 투영 K8s에서 안 보임
GPU Scheduling Backend.AI (Sokovan) Backend.AI (Sokovan)
K8s 활용 범위 View/Interface 배포/운영 Infra
운영 복잡도 높음 (3개 System) 낮음 (1개 Cluster)
Multi-Node Networking Backend.AI 자체 Docker Swarm Overlay
Lablup Seminar Day Q2 2026

Questions?

- K8s가 Infra OS로 자리잡은 현실, GPU Scheduling 생태계, Backend.AI의 위치를 짚음 - Lagrange에서 시작해서 다음 단계 통합 Architecture까지

- K8s 생태계의 현재 → GPU Scheduling의 현실 → Backend.AI의 강점과 한계 → 통합 Architecture 순서

- 본론에 들어가기 전에 이 발표를 왜 하는지부터

- Orchestrator로서의 K8s와 경쟁했던 건 맞음 - 하지만 Infra OS로서의 K8s는 경쟁 대상이 아니라 활용 대상

- 이 발표에서 하나씩 보여줄 예정 - Kueue, Volcano, KAI, Slurm 전부 K8s Scheduler를 피함 - K8s Scheduler는 Stateless 웹 서비스를 위해 설계된 것. GPU는 그 범위 밖 - Backend.AI가 K8s Scheduler를 안 쓰는 건 특이한 게 아니라 업계 전체가 그러고 있음

- 첫 번째 Part - K8s가 10년간 어떻게 바뀌었는지, 숫자로 확인

- CNCF의 3단계 Framework - 두 번째 전환이 핵심: CRD와 Operator가 나오면서 K8s 위에 뭐든 올릴 수 있게 됨 - DB, ML Pipeline, Spark Cluster 전부 K8s CRD로 운영하는 시대 - DRA GA로 GPU까지 K8s의 1급 시민

- CNCF가 2026.01에 발표한 Survey - 제목 자체가 "Kubernetes Established as the De Facto Operating System for AI" - 82% Production 사용, GenAI Inference도 66%가 K8s 위 - 도입 장벽 1위가 기술적 복잡도가 아니라 문화 변화라는 건 K8s 자체는 이미 성숙했다는 뜻

- GPU만 따로 뽑은 Timeline - 2017년 Device Plugin 이후 8년간 정수 단위 GPU 모델이 거의 불변 - 2025년 DRA GA로 속성 기반 요청 + Topology 인식 가능 - JobSet, LeaderWorkerSet로 분산 Training/Inference Topology까지 K8s Native

- 두 번째 Part - K8s 기본 Scheduler의 GPU 한계를 짚고, K8s Native Solution들을 하나씩 살펴봄

- K8s 기본 Scheduler의 GPU 한계는 근본적 - Topology Manager가 GA이긴 한데 kubelet Level이라 Scheduler는 NUMA를 모른 채 배치 - DRA가 상황을 개선하지만 Ecosystem이 따라가는 단계

img-needed: "Kueue architecture diagram showing LocalQueue, ClusterQueue, Cohort hierarchy"

- Kueue는 가장 가볍고 K8s SIG에서 직접 관리 - Scheduler를 바꾸는 게 아니라 앞단에서 Admission만 Control - Fractional GPU는 범위 밖, Topology-Aware Scheduling(TAS)은 지원

img-needed: "Volcano architecture diagram showing volcano-scheduler, Queue, PodGroup"

- Volcano는 Scheduler를 통째로 교체 - Gang Scheduling이나 DRF가 필요한 HPC 환경에서 강함 - 단점은 무겁고 기존 Scheduler와 공존이 어려움

img-needed: "KAI Scheduler architecture diagram showing hierarchical quota tree"

- NVIDIA가 Run:ai를 인수하고 Open Source로 공개 - K8s Native에서 Fractional GPU를 가장 성숙하게 지원하는 Solution - 다만 NVIDIA 생태계 중심이고 Community가 아직 작음

- Fractional GPU를 K8s Native로 가장 성숙하게 지원하는 건 KAI - Gang Scheduling은 K8s 기본에도 Alpha로 들어왔지만 Production 수준 아님 - 각 Solution마다 강점이 있지만 전부를 Cover하는 건 없음

- 이게 이 Section의 핵심 메시지 - K8s가 "AI의 OS"라고 불리지만, 실제 GPU Scheduling은 K8s 기본 Scheduler를 피하면서 이루어짐 - K8s가 쓰이는 이유는 Scheduler가 아니라 API Server + CRD + 운영 편의 때문 - K8s Scheduler는 Stateless 웹 서비스를 위해 설계된 것. GPU Workload는 그 설계 범위 밖 - DRA가 이 격차를 좁히기 시작했지만 아직 초기 단계 - Backend.AI도 이 관점에서 보면 다른 Solution들과 같은 선상에 있음

- Slurm은 앞 Slide에서 본 "Scheduler를 완전히 무시하는" 카테고리 - K8s 밖에서 GPU Scheduling을 독자적으로 다루는 세계

- Slurm의 가장 큰 한계는 Inference/Serving에 맞지 않다는 것 - Service, Ingress, Load Balancer 개념 자체가 없음 - NVIDIA가 SchedMD를 인수한 건 Slurm의 위상을 보여주지만, 설계적 한계는 그대로 - Slinky도 K8s Scheduler를 우회하는 사례: K8s는 배포만, Scheduling은 Slurm

- Backend.AI가 앞의 Solution들과 출발점 자체가 다르다는 것을 보여줌

- fGPU는 K8s Native에서 최근에야 지원되기 시작한 Fractional GPU를 K8s 이전부터 자체 해결 - Sokovan은 NUMA Topology를 보면서 CPU-GPU-Memory를 물리적으로 가까운 조합으로 Mapping - Gang Scheduling은 Sokovan이 Application Layer에서 보장, K8s 비종속 - Multi-Node Session은 분산 Training을 위한 핵심 기능

- Hardware Agnostic은 KAI가 NVIDIA 전용인 것과 대비 - K8s 없이 돌아간다는 건 장점이자 동시에 고민 포인트

- Backend.AI의 기술적 차별점은 분명 - K8s가 Infra OS가 된 세계에서 K8s 밖에 따로 있으면 고객에게 "또 하나의 Silo" - 이미 K8s로 Monitoring, CI/CD, GitOps를 다 하고 있는 고객한테 별도 운영 체계를 요구하면 부담

- 왜 통합이 필요한지, 어떤 질문을 던져야 하는지 정리

- 단순히 K8s 위에 Backend.AI를 올리는 게 아님 - Backend.AI가 관리하는 Computing Resource를 K8s 세계에서 자연스럽게 쓸 수 있게 만드는 것 - 반대로 K8s Workload가 Backend.AI Infra 위에서 돌 수 있게 하는 것 - 이 양방향 Bridge가 필요

- Lagrange는 Backend.AI와 K8s를 잇는 첫 번째 시도

- Virtual Kubelet은 K8s Node를 Software로 구현하는 Pattern - 물리 Server 없이 K8s API Server에 Node로 등록, 뒤에 어떤 Computing Backend든 연결 가능 - AWS Fargate가 대표적, InterLink은 Slurm Cluster를 K8s에 연결 - CNCF Sandbox 단계에 머물러 있음

- 구조는 두 Component: Bridge + Driver Server - Bridge가 K8s 안에서 Backend.AI Agent당 Virtual Kubelet Instance를 띄워 가상 Node 등록 - 3개의 Reconciler: Node(Agent 상태 → K8s Node), Workload(Session ↔ Pod), Service(Serving → Deployment+Service) - Driver Server는 gRPC로 Backend.AI 측 정보를 Bridge에 제공 (Direct 또는 Reverse Tunnel 모드) - Tracked Workload 기능: K8s에서 Pod을 만들면 Backend.AI Session으로 자동 생성도 가능

- Lagrange는 동작함. kubectl로 Backend.AI Resource 확인, Serving의 K8s Service 노출 - 하지만 두 Cluster를 따로 운영하면서 Bridge로 연결하는 형태라 운영 복잡도가 높았음 - 이 경험을 바탕으로 다음 단계 접근이 나옴

- Lagrange에서 배운 것을 바탕으로 다음 단계 통합 Architecture 설명

- Control Plane은 K8s 위에 배포: Manager는 Deployment, DB/etcd/Redis는 StatefulSet - Agent는 DaemonSet으로 GPU Node에 배포, hostNetwork: true - GPU Workload Container는 K8s Pod이 아님. Agent가 Host Docker에 직접 생성 - K8s Device Plugin은 명시적으로 비활성화. GPU 할당은 Backend.AI가 etcd를 통해 관리

- DooD = Docker-out-of-Docker. DinD처럼 중첩 Daemon을 띄우는 게 아님 - Host Docker Socket을 Mount해서 Host Level에 Sibling Container로 생성 - Agent Pod 안에서는 Agent Server Process만 동작, GPU Workload는 Host Docker Runtime에서 직접 생성 - K8s 입장에서는 DaemonSet Pod만 보이고, Kernel Container들은 K8s 관리 범위 밖 - GPU Node에 `backendai.io/dedicated=agent:NoSchedule` Taint 적용

- 핵심은 K8s를 Infra OS로만 쓰겠다는 것 - K8s가 잘하는 배포, Service Discovery, Monitoring은 활용 - GPU Workload를 K8s Pod으로 만들지 않음

- 고객은 CPU Workload는 K8s에서, GPU Workload는 Backend.AI UI/CLI로 관리 - GPU Workload를 kubectl로 봐야 한다는 요구는 실제로 별로 없음

- Multi-Node Session의 Networking이 핵심 Challenge - 현재는 Docker Swarm Overlay Network를 사용해서 K8s CNI와 공존 - CIDR Range를 분리해서 IP 충돌을 방지 - 장기적으로는 containerd로 전환하면서 CNI를 직접 호출하는 방향

- Storage는 Host NFS Pre-Mount로 해결 - CNI 공존이 가장 까다로운 부분: K8s CNI와 Docker Swarm Network가 같은 Host에서 공존 - 보안은 DooD 특성상 Host Docker 전체 제어권을 가지므로 Hardening 필요 - Runtime 전환은 Phase별 접근: Docker → containerd

- 가장 큰 차이: Cluster가 하나냐 둘이냐 - Lagrange는 Backend.AI + K8s 별도 운영 + Bridge, 다음 단계는 K8s 하나에 Backend.AI 배포 - GPU Workload가 K8s에서 안 보인다는 Trade-Off - Lagrange는 이 Architecture가 자리잡으면 Sunset 예상

질문 받겠습니다.