Kubernetes Cluster Architecture for Machine Learning (On-Prem)

50-node ML Kubernetes Cluster 설계 사례
이 문서는 CPU와 GPU 노드가 혼합된 On-Prem 환경에서 ML 워크로드를 위한 Kubernetes Cluster를 어떻게 설계해야 하는지 설명한다.
핵심 목표는 GPU 자원의 효율적 활용고성능 I/O를 위한 스토리지 계층화다.


1. 전체 구조 개요

클러스터는 총 50노드( GPU 15대 + CPU 35대 )로 구성된다.
GPU 노드는 주로 학습(Training), CPU 노드는 전처리, 데이터 적재, 서빙(Serving)용으로 사용된다.

아래는 전체 아키텍처 개념도다.

GPU Node 1~15 → NVMe 기반 Tier1 Local Disk
CPU Node 1~35 → Ceph 기반 Tier2 Local Disk
NAS (MinIO) → Tier3 백업/장기보관 스토리지
네트워크는 InfiniBand + Ethernet 병행 구성


2. 네트워크 설계 (Ethernet + InfiniBand)

2.1 구조

  • Ethernet Switch
    • 모든 노드에 공통 적용.
    • Kubernetes 클러스터 내부 통신 (Control Plane, API, Pod 네트워킹) 담당.
  • InfiniBand Switch
    • GPU 노드에만 적용.
    • 모델 학습 중 GPU 간 파라미터 동기화(AllReduce, NCCL 통신 등)에 고성능 RDMA 링크 제공.

2.2 적용 정책

  • k8sEthernet 네트워크만 관리한다. (CNI: Cilium or Calico)
  • InfiniBand는 Kubernetes 외부 네트워크로 설정, Pod 내에서 직접 사용하도록 구성한다.
  • GPU 노드만 InfiniBand NIC를 활성화하여 고속 GPU to GPU 통신을 전용 경로로 분리.

이렇게 하면 CPU 노드의 불필요한 비용을 줄이면서 GPU 클러스터의 통신 병목을 해소할 수 있다.


3. Storage 계층 구조

머신러닝 워크로드는 학습 데이터셋, 체크포인트, 모델 결과물 등 다양한 스토리지 요구사항이 있다.
따라서 스토리지를 3계층으로 구분했다.

Tier구성목적비고
Tier 1GPU Node의 Local NVMe DiskScratch / Checkpoint Only초고속 임시 저장용, Pod Local PV로 구성
Tier 2CPU Node Local Disk 기반 CephDataset / Checkpoint 저장Ceph RBD or CephFS 사용
Tier 3NAS (MinIO backend)장기 보관 / 백업Object Storage, S3 API 호환

3.1 Tier 1 — Local NVMe

  • 각 GPU 노드의 로컬 NVMe SSD를 Local Persistent Volume으로 사용.
  • 모델 학습 중 intermediate file, temporary checkpoint 보관.
  • Pod 종료 시 삭제 정책(delete)으로 관리, 속도 최우선.

3.2 Tier 2 — Ceph Cluster

  • CPU 노드의 로컬 디스크를 묶어 Ceph Storage 구성.
  • 주요 데이터셋 및 학습 중간 결과를 중앙집중형으로 관리.
  • GPU 노드에서도 Ceph Volume을 마운트하여 공유 데이터 접근 가능.

3.3 Tier 3 — MinIO NAS

  • MinIO 기반 NAS Object Storage를 Tier3로 구성.
  • 장기 보관용으로 사용하며, Ceph 데이터의 백업 대상.
  • mc mirror 혹은 rclone으로 Ceph ↔ MinIO 간 정기 백업 수행.

4. 스케줄링 정책

ML 워크로드는 GPU 자원의 효율적 분배가 핵심이다.
이를 위해 Volcano + Kueue 조합으로 스케줄링을 설계했다.

4.1 Volcano (gang scheduling)

  • 모든 GPU Pod가 동시에 slot을 확보해야 job을 시작함.
  • 부분 할당으로 인한 자원 낭비를 방지하고, 멀티 GPU job의 deadlock을 예방.

4.2 Kueue (Fair/Borrowing/Preemption)

  • 부서/프로젝트별 큐를 나눠서 GPU 점유율을 공정하게 관리.
  • 유휴 GPU는 다른 팀이 일시적으로 “borrow” 가능.
  • 긴급 job은 Preemption 정책으로 우선 처리.

결과적으로 Volcano는 Job 동시성 보장, Kueue는 조직 간 공정성 확보라는 역할 분담을 수행한다.


5. 모니터링 및 관제

Zabbix로 통합 모니터링을 구성한다.

  • GPU/CPU utilization, Ceph I/O, InfiniBand Throughput, Kubernetes Pod 상태 등을 실시간 수집.

6. 설계 요약

항목구성 요약
네트워크Ethernet(k8s control) + InfiniBand(GPU only)
GPU 스케줄링Volcano + Kueue
스토리지3-tier 구조 (NVMe / Ceph / MinIO)
모니터링Zabbix 통합 감시
주요 목표GPU 효율 극대화, 고성능 I/O, 부서 간 공정 자원 분배

7. 확장 및 운영 포인트

  • GPU 노드 확장 시 InfiniBand 스위치 포트 여유 고려.
  • Ceph Cluster는 CPU 노드 3대 이상 MON/OSD 분리 배치로 안정성 확보.
  • MinIO는 4개 노드 분산 구성으로 2노드 장애까지 내결함성 확보.
  • Zabbix는 Slack, Mattermost 등으로 Alert 연동.

결론

이 구성은 단순한 Kubernetes 클러스터가 아니라,
“GPU 리소스 효율화 + 고성능 I/O + 스케줄링 공정성”을 모두 달성하는 ML 전용 On-Prem Platform이다.

GPU 노드에는 InfiniBand를, CPU 노드에는 Ceph를,
그리고 전체에는 Zabbix를 더해 — 관리성과 확장성까지 확보했다.

ⓒ 2025 엉뚱한 녀석의 블로그 [quirky guy's Blog]. 본문 및 이미지를 무단 복제·배포할 수 없습니다. 공유 시 반드시 원문 링크를 명시해 주세요.
ⓒ 2025 엉뚱한 녀석의 블로그 [quirky guy's Blog]. All rights reserved. Unauthorized copying or redistribution of the text and images is prohibited. When sharing, please include the original source link.

🛠 마지막 수정일: 2025.10.13


코멘트

“Kubernetes Cluster Architecture for Machine Learning (On-Prem)”에 대한 2개 응답

  1. JetBlack 아바타
    JetBlack

    전체 구조에 각 요소마다 완벽한 내용 및 설명.. 너무나 훌륭하십니다.

    그 동안 해오신 경험과, 능력에 경의를 표 합니다.

    1. black K 아바타
      black K

      부족한 글 읽어주셔서 감사합니다.
      좋은 하루 보내세요

답글 남기기