반응형
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 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
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 노드를 “추측”이 아닌 “검증” 기반으로 운영할 수 있다.
반응형
'[GPUaaS]' 카테고리의 다른 글
| [중요2] 쿠버네티스 입문·실전 !! (1) | 2026.01.11 |
|---|---|
| [DCGM 진단이란?] NVIDIA 공식 헬스 체크 도구 (0) | 2026.01.10 |
| [GPU 장애] 유형별 원인 분석 리포트 (0) | 2026.01.10 |
| [GPU 검증 결과] 월별 GPU 리포트 자동 생성 (2) | 2026.01.10 |
| [대규모 AI 서비스] 운영을 위한 Kubernetes GPU 클러스터 도입기 (1) | 2026.01.09 |
| [CUDA 샘플] Kubernetes GPU 노드 검증 가이드 (0) | 2026.01.09 |
| CUDA 샘플(CUDA Samples)이란? (0) | 2026.01.09 |
| [중요][NCP] Kubernetes Service 첫 걸음, WordPress 시작 해보기! (1) | 2026.01.09 |
댓글