반응형
**GPU 오토스케일링 환경에서 Helm + DaemonSet 구조를 쓰는 “핵심 이유”**
✅ 결론 (한 줄 요약)
네. 됩니다.
GPU 노드가 3대 → 5대로 오토스케일링되면
새로 추가된 2대에도 자동으로
- NVIDIA Device Plugin
- DCGM Exporter
가 배포되고,
Prometheus → Grafana 모니터링에 자동 포함됩니다.
👉 추가 작업 0 (Zero Touch) 입니다.
1️⃣ 왜 자동으로 되나? (구조 핵심)
핵심 포인트는 이것입니다
NVIDIA Device Plugin과 DCGM Exporter는 “DaemonSet”으로 배포됨
DaemonSet의 특징
- 노드가 추가되면 자동으로 Pod 생성
- 노드가 삭제되면 Pod 자동 제거
- 사람이 개입할 필요 없음
2️⃣ 실제 동작 흐름 (GPU 노드 오토스케일 시)
상황
- 기존 GPU 노드: 3대
- 오토스케일링으로 GPU 노드: 5대
🔁 내부에서 자동으로 일어나는 일
① 새 GPU 노드 2대 생성
gpu-node-4
gpu-node-5
gpu-node-5
(NCP가 Driver 포함 상태로 생성)
② Device Plugin DaemonSet 동작
nvidia-device-plugin-daemonset
├─ gpu-node-1 ✔
├─ gpu-node-2 ✔
├─ gpu-node-3 ✔
├─ gpu-node-4 ✔ (자동 생성)
└─ gpu-node-5 ✔ (자동 생성)
├─ gpu-node-1 ✔
├─ gpu-node-2 ✔
├─ gpu-node-3 ✔
├─ gpu-node-4 ✔ (자동 생성)
└─ gpu-node-5 ✔ (자동 생성)
→ Kubernetes가 자동으로 Pod 배치
③ DCGM Exporter DaemonSet 동작
dcgm-exporter
├─ gpu-node-1 ✔
├─ gpu-node-2 ✔
├─ gpu-node-3 ✔
├─ gpu-node-4 ✔ (자동 생성)
└─ gpu-node-5 ✔ (자동 생성)
├─ gpu-node-1 ✔
├─ gpu-node-2 ✔
├─ gpu-node-3 ✔
├─ gpu-node-4 ✔ (자동 생성)
└─ gpu-node-5 ✔ (자동 생성)
④ Prometheus 자동 수집
- ServiceMonitor가 label 기반으로 타겟 자동 발견
- 새로운 dcgm-exporter Pod를 자동 Target 추가
⑤ Grafana 자동 반영
- PromQL은 노드 수에 무관
- 새 노드 메트릭이 자동으로 그래프에 추가
3️⃣ 실제로 확인하면 이렇게 보입니다
GPU 노드 수 증가 확인
kubectl get nodes | grep gpu
Device Plugin Pod 확인
kubectl get pods -n kube-system | grep nvidia
출력 예:
nvidia-device-plugin-daemonset-aaa Running gpu-node-4
nvidia-device-plugin-daemonset-bbb Running gpu-node-5
nvidia-device-plugin-daemonset-bbb Running gpu-node-5
DCGM Exporter Pod 확인
kubectl get pods -n monitoring | grep dcgm
Prometheus Target 확인
Status → Targets dcgm-exporter (5/5 UP)
4️⃣ Grafana 대시보드는 왜 수정할 필요가 없나?
이유
- Grafana는 노드 이름을 하드코딩하지 않음
- 보통 이런 쿼리 사용:
avg by (instance) (DCGM_FI_DEV_GPU_UTIL)
→ instance label이 자동 추가됨
5️⃣ “자동으로 안 되는” 경우는 언제?
아래 중 하나라도 빠지면 ❌
| 문제 | 결과 |
| Device Plugin이 DaemonSet 아님 | 새 노드 GPU 인식 안됨 |
| DCGM Exporter toleration 누락 | GPU 노드에 Pod 배치 안됨 |
| ServiceMonitor 없음 | Prometheus가 새 노드 수집 안함 |
| nodeSelector 고정 | 특정 노드만 감시 |
6️⃣ 오토스케일링 환경에서 꼭 확인할 설정
DCGM Exporter Helm 값 (중요)
--set tolerations[0].key="nvidia.com/gpu" \
--set tolerations[0].operator="Exists" \
--set tolerations[0].effect="NoSchedule"
--set tolerations[0].operator="Exists" \
--set tolerations[0].effect="NoSchedule"
(선택) GPU 노드만 타게팅
--set nodeSelector."nvidia\.com/gpu\.present"="true"
7️⃣ 오토스케일링 + GPU 모니터링 정석 아키텍처
GPU HPA / Cluster Autoscaler
↓
GPU Node 추가
↓
DaemonSet 자동 배포
(Device Plugin / DCGM Exporter)
↓
Prometheus Target 자동 추가
↓
Grafana 자동 시각화
↓
GPU Node 추가
↓
DaemonSet 자동 배포
(Device Plugin / DCGM Exporter)
↓
Prometheus Target 자동 추가
↓
Grafana 자동 시각화
8️⃣ 핵심 문장 (이해 체크)
“Helm으로 설치했느냐”가 중요한 게 아니라
“DaemonSet이냐”가 자동 확장의 핵심이다.”
반응형
'[GPUaaS] > GPUmgt' 카테고리의 다른 글
| [NCP 실전] DCGM Exporter DaemonSet YAML 상세 해설 (1) | 2026.01.15 |
|---|---|
| [중요2][NCP 실전] Kubernetes→ NVIDIA Device Plugin→ DCGM Exporter→ Prometheus→ Grafana 설치 가이드 (0) | 2026.01.14 |
| [NCP 적용불가][NVIDIA GPU Operator] GPU 노드 전체를 자동으로 세팅해주는 올인원 운영자(Operator) (0) | 2026.01.14 |
| [GPU가 놀고 있나?] “리부팅하라”는 명령이 절대 아니다. (0) | 2026.01.13 |
댓글