본문 바로가기
[GPUaaS]

[DCGM Diagnostics] Kubernetes Job 실전 예제

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

 

 

 

GPU 노드 헬스 체크 자동화 방법

GPU 쿠버네티스 환경에서 가장 중요한 운영 포인트 중 하나는 “이 GPU 노드를 믿고 써도 되는가?” 입니다.

이를 해결하는 가장 정석적인 방법이 바로
DCGM Diagnostics를 Kubernetes Job으로 실행하는 방식입니다.


왜 Kubernetes Job으로 DCGM Diagnostics를 실행할까?

기존 방식의 문제

  • SSH 접속 → 수동 실행
  • 특정 관리자만 상태를 알고 있음
  • 장애 이력 관리 불가
  • 노드 추가/교체 시 누락 발생

Job 방식의 장점

  • 자동화 가능
  • GPU 노드별 독립 실행
  • 성공/실패 명확
  • CI/CD · 노드 검증 파이프라인 연계

전체 아키텍처 개요

 
 
[Kubernetes Cluster]
   ├─ GPU Node A ── DCGM Diagnostics Job ── PASS
   ├─ GPU Node B ── DCGM Diagnostics Job ── FAIL
   └─ GPU Node C ── DCGM Diagnostics Job ── PASS
 
 
  • 각 GPU 노드에서 Job 실행
  • DCGM Diagnostics 결과로 노드 상태 판단
  • FAIL 노드는 Cordon / 격리 가능

사전 준비 조건

1️⃣ GPU 노드 필수 조건

  • NVIDIA GPU 장착
  • NVIDIA Driver 설치
  • NVIDIA Container Toolkit 설치
  • nvidia.com/gpu 리소스 정상 인식
 
kubectl describe node <gpu-node> | grep nvidia.com/gpu

2️⃣ NVIDIA DCGM 이미지

NVIDIA는 공식 DCGM 컨테이너 이미지를 제공합니다.

 
nvcr.io/nvidia/cloud-native/dcgm:latest

⚠️ Diagnostics는 dcgm-exporter 이미지가 아니라 dcgm 이미지 사용


DCGM Diagnostics Kubernetes Job 예제

기본 구조

  • Job
  • GPU 1개 요청
  • 특정 노드에 스케줄링
  • Diagnostics 실행 후 종료

DCGM Diagnostics Job YAML

 
 
apiVersion: batch/v1
kind: Job
metadata:
  name: dcgm-diagnostics-job
spec:
  backoffLimit: 0
  template:
    spec:
      restartPolicy: Never
      containers:
      - name: dcgm-diag
        image: nvcr.io/nvidia/cloud-native/dcgm:latest
        command: ["/bin/bash", "-c"]
        args:
          - |
            echo "=== DCGM Diagnostics Start ==="
            dcgmi diag -r 3
            echo "=== DCGM Diagnostics End ==="
        resources:
          limits:
            nvidia.com/gpu: 1
 
 

핵심 포인트

항목설명
dcgmi diag -r 3 Level 3 진단 (운영 환경 권장)
restartPolicy: Never 진단 결과 유지
backoffLimit: 0 실패 시 재시도 방지

특정 GPU 노드에만 실행하기

노드 라벨 추가

 
kubectl label node gpu-node-1 gpu-diagnostics=true

NodeSelector 적용

 
spec: template: spec: nodeSelector: gpu-diagnostics: "true"

👉 노드 단위 GPU 검증 가능


DCGM Diagnostics 결과 확인 방법

Job 상태 확인

 
kubectl get job dcgm-diagnostics-job
상태의미
COMPLETIONS: 1/1 진단 성공
FAILED GPU 또는 환경 문제

로그 확인 (가장 중요)

 
kubectl logs job/dcgm-diagnostics-job

정상 예시

 
Test 1: Memory test : PASS Test 2: SM stress test : PASS Test 3: PCIe/NVLink test : PASS

실패 예시

 
Test 2: SM stress test : FAIL Error: CUDA error detected

결과 기반 자동 조치 시나리오

1️⃣ FAIL 시 노드 격리

 
kubectl cordon gpu-node-1

또는 자동화:

  • Argo Workflow
  • Jenkins
  • GitOps 파이프라인

2️⃣ GPUaaS 운영 정책 예시

DCGM 결과조치
PASS GPU 스케줄링 허용
FAIL 노드 Cordon
반복 FAIL RMA 요청

운영 환경 권장 DCGM Diagnostics 전략

진단 레벨 선택

상황레벨
노드 신규 추가 Level 2
장애 분석 Level 3
하드웨어 불량 판정 Level 4

실행 주기

  • 노드 Join 시 자동 실행
  • 월 1회 정기 점검
  • 장애 발생 시 즉시 재진단

DCGM Diagnostics + Prometheus 연계 (확장)

  • Job 결과 → 로그 파싱
  • FAIL 카운트 메트릭화
  • Grafana GPU 헬스 대시보드
  • 월별 GPU 상태 리포트 생성

👉 GPUaaS 정산 신뢰도 핵심 요소


정리

한 문장 요약

DCGM Diagnostics를 Kubernetes Job으로 실행하면
GPU 노드를 “추측”이 아닌 “검증” 기반으로 운영할 수 있다.

 

 

 

반응형

댓글