본문 바로가기
[GPUaaS]

[CUDA 샘플] Kubernetes GPU 노드 검증 가이드

by METAVERSE STORY 2026. 1. 9.
반응형

 

 

 

GPU 클러스터 구축 후 반드시 해야 할 필수 점검 절차

Kubernetes 환경에서 GPU 노드를 붙였다고 해서
**“GPU가 정상적으로 쓸 수 있다”**고 말할 수는 없습니다.

👉 진짜 검증은 CUDA 샘플이 돌아가는지 여부입니다.

이 글에서는
CUDA 샘플을 활용해 Kubernetes GPU 노드를 체계적으로 검증하는 방법
실무 기준으로 자세히 설명합니다.


1. 왜 CUDA 샘플로 GPU 노드를 검증해야 할까?

Kubernetes + GPU 환경에서는 다음 문제가 자주 발생합니다.

GPU 노드에서 흔한 장애 유형

  • GPU는 보이는데 Pod에서 안 잡힘
  • nvidia-smi는 되는데 CUDA 커널 실행 실패
  • 드라이버 / CUDA / 컨테이너 런타임 버전 불일치
  • 멀티 GPU 노드에서 일부 GPU만 동작

📌 이런 문제는 CUDA 샘플 실행 전에는 절대 알 수 없습니다.


2. CUDA 샘플 기반 GPU 검증의 핵심 개념

검증 레벨 구분

레벨검증 내용
L1 GPU 장치 인식
L2 CUDA 런타임 동작
L3 커널 실행
L4 메모리 전송 성능
L5 멀티 GPU / 병렬 처리

👉 CUDA 샘플은 L1 ~ L5를 전부 커버


3. Kubernetes GPU 노드 기본 구성 요건

CUDA 샘플 검증 전 필수 조건입니다.

노드 레벨

  • NVIDIA GPU 장착
  • NVIDIA Driver 설치
  • CUDA 호환 드라이버 버전

클러스터 레벨

  • nvidia-device-plugin DaemonSet
  • containerd or docker + NVIDIA runtime
  • GPU 리소스 노출 확인
 
kubectl describe node | grep nvidia.com/gpu

출력 예:

 
Capacity: nvidia.com/gpu: 4

4. CUDA 샘플용 테스트 컨테이너 이미지

권장 이미지

 
nvidia/cuda:<CUDA_VERSION>-devel-ubuntu22.04

예:

 
nvidia/cuda:12.3.2-devel-ubuntu22.04

👉 devel 이미지는 CUDA 샘플 컴파일 가능


5. GPU 검증용 Kubernetes Pod YAML

CUDA 샘플 테스트 Pod 예제

 
apiVersion: v1
kind: Pod
metadata:
  name: cuda-sample-test
spec:
  restartPolicy: Never
  containers:
  - name: cuda-test
    image: nvidia/cuda:12.3.2-devel-ubuntu22.04
    command: ["/bin/bash", "-c"]
    args:
      - |
        nvidia-smi && \
        cd /usr/local/cuda/samples/1_Utilities/deviceQuery && \
        make && ./deviceQuery
    resources:
      limits:
        nvidia.com/gpu: 1
 
 

6. 1단계 검증: GPU 인식 확인 (deviceQuery)

실행 결과 예시

 
Detected 1 CUDA Capable device(s) Device 0: "NVIDIA A100-SXM4-40GB" CUDA Driver Version / Runtime Version: 12.3 / 12.3 Result = PASS

이 단계에서 확인하는 것

  • GPU 모델
  • Compute Capability
  • CUDA Driver / Runtime 일치 여부
  • PASS 여부

❌ FAIL 시 원인

  • 드라이버 버전 불일치
  • device-plugin 오류
  • GPU 런타임 미설정

7. 2단계 검증: CUDA 커널 실행 (vectorAdd)

 
cd /usr/local/cuda/samples/0_Introduction/vectorAdd make ./vectorAdd

정상 출력:

 
Test PASSED

👉 GPU 커널 실행 가능 여부 검증


8. 3단계 검증: 메모리 대역폭 테스트 (bandwidthTest)

 
cd /usr/local/cuda/samples/1_Utilities/bandwidthTest make ./bandwidthTest

출력 예:

 
Device to Device Bandwidth: 1450 GB/s

활용 포인트

  • GPU 성능 저하 감지
  • PCIe / NVLink 정상 여부 확인
  • 노드 간 성능 편차 분석

9. 멀티 GPU 노드 검증 시나리오

GPU 개수 확인

 
nvidia-smi -L

Kubernetes GPU 할당 테스트

 
resources: limits: nvidia.com/gpu: 2

확인 포인트

  • Pod 내부에서 2개 GPU 인식 여부
  • deviceQuery에서 Device 0, 1 출력
  • GPU 간 간섭 여부

10. GPU 노드 검증 자동화 (운영 관점)

DaemonSet 기반 자동 검증

  • 신규 GPU 노드 조인 시 자동 실행
  • 결과를 Prometheus / Loki로 수집

검증 항목 체크리스트

  • deviceQuery PASS
  • vectorAdd PASS
  • bandwidth 기준치 이상
  • GPU 메모리 에러 없음

11. GPUaaS / 사내 AI 플랫폼에서의 활용

GPUaaS 표준 검증 플로우

 
노드 추가 → CUDA 샘플 검증 → 성능 기준 통과 → GPU Pool 편입

실무 효과

  • GPU 장애 사전 차단
  • 사용자 불만 감소
  • SLA 기반 GPU 제공 가능

12. CUDA 샘플 + Kubernetes 검증 요약

항목의미
deviceQuery GPU & CUDA 정상 여부
vectorAdd 커널 실행 검증
bandwidthTest 성능 기준 검증
Kubernetes Pod 실제 운영 환경 동일
자동화 GPUaaS 필수 요소

13. 마무리

“GPU가 있다” ≠ “GPU를 쓸 수 있다”

Kubernetes 환경에서는
CUDA 샘플을 통과한 GPU만이 진짜 GPU 노드입니다.

CUDA 샘플 기반 검증은

  • 사내 GPU 플랫폼
  • AI/ML 인프라
  • GPUaaS 운영

모두에서 표준 절차로 가져가야 합니다.

 

 

반응형

댓글