[NVIDIA DCGM Issue]Error starting nv-hostengine: DCGM initialization error

요약

해결 절차를 블로그 글감으로 발전시키기 위한 트러블슈팅 노트입니다.

핵심 포인트

  • 문제 현상: nvcr.io/nvidia/k8s/dcgm-exporter 컨테이너 실행 시 다음 오류 발생
  • TL;DR
  • 배경/문제 정의
  • 원인/아키텍처
  • 구현 가이드

지식 그래프

정리 내용

Warning #2: dcgm-exporter doesn't have sufficient privileges to expose profiling metrics. To get profiling metrics with dcgm-exporter, use --cap-add SYS_ADMIN
time="2021-12-14T17:28:56Z" level=info msg="Starting dcgm-exporter"
CacheManager Init Failed. Error: -17
time="2021-12-14T17:28:56Z" level=fatal msg="Error starting nv-hostengine: DCGM initialization error"

TL;DR

dcgm-exporter 실행 시 발생하는 DCGM initialization error 34는 MIG 모드 활성화된 GPU에서 권한 부족으로 인해 발생 Docker 컨테이너에 SYS_ADMIN 권한 부여(—cap-add=SYS_ADMIN) 및 seccomp=unconfined 설정으로 해결 가능 Kubernetes 환경에서는 securityContext에 해당 권한 추가 필요

배경/문제 정의

  • 문제 현상: nvcr.io/nvidia/k8s/dcgm-exporter 컨테이너 실행 시 다음 오류 발생
     

Error starting nv-hostengine: DCGM initialization error #34

- 환경 조건:
- NVIDIA A100 GPU (MIG 모드 일부 활성화)
- Docker 환경 (Ubuntu 20.04, AMD CPU)
- 드라이버 버전 495.29.05, CUDA 11.5
- dcgm-exporter 목적: NVIDIA GPU 상태를 Prometheus로 수집 가능하게 하는 Exporter
### 원인/아키텍처
- DCGM (Data Center GPU Manager)은 NVIDIA GPU의 헬스 및 성능 정보를 제공하는 백엔드 시스템
- nv-hostengine는 DCGM의 데몬 프로세스로, GPU와의 로우레벨 통신을 수행함
- MIG 모드 활성화 시: DCGM은 MIG 인스턴스를 관리하기 위해 추가적인 시스템 권한이 필요
- 기본 Docker 런타임은 이러한 권한을 제한하여, 17 (Permission Denied) 오류 유발 → Error #34 발생
💡
> Error #34는 내부적으로 nv-hostengine이 DCGM 초기화에 실패했음을 의미하며, 이는 MIG 설정과 권한 부족이 복합적으로 작용
### 구현 가이드
#### Docker에서 해결
```bash
docker run \
--gpus all \
--rm \
-p 9400:9400 \
--cap-add=SYS_ADMIN \
--security-opt seccomp=unconfined \
nvcr.io/nvidia/k8s/dcgm-exporter:2.3.1-2.6.1-ubuntu20.04

Kubernetes에서 해결

securityContext:
  capabilities:
    add:
      - SYS_ADMIN
  seccompProfile:
    type: Unconfined
  • 위 securityContext는 Pod 혹은 Container 수준에서 설정 가능
  • MIG 사용 여부에 따라 GPU 리소스 요청 시 MIG-compatible scheduler 사용 필요

운영/성능/모니터링

  • -cap-add=SYS_ADMIN은 높은 권한을 부여하므로, 보안적으로 검토 필요
  • dcgm-exporter는 GPU 성능/헬스 상태를 /metrics로 노출하며, Prometheus 설정 필요
  • MIG 인스턴스가 변경되면 dcgm-exporter 재시작 권장

보안/리스크

⚠️

SYS_ADMIN 권한은 거의 root 수준이며, 컨테이너 탈출 가능성 등의 보안 위협이 존재 따라서 신뢰할 수 있는 노드에서만 적용하거나, 노드 격리를 고려해야 함

  • 가능한 경우 MIG를 비활성화하고 default GPU 모드에서 dcgm-exporter 사용 검토

체크리스트

  • MIG 모드 사용 여부 확인 (nvidia-smi)
  • Docker 컨테이너에 SYS_ADMIN 권한 부여
  • seccomp profile 해제 (unconfined)
  • Kubernetes 배포 시 securityContext 설정 반영
  • Prometheus와 연동 테스트 완료

FAQ

Q: MIG가 꺼져 있으면 이 문제가 발생하지 않나요? A: 대부분의 경우 MIG가 꺼져 있으면 SYS_ADMIN 권한 없이도 dcgm-exporter가 정상 작동합니다. Q: —cap-add=SYS_ADMIN 없이 MIG 모드에서 실행할 수 있는 방법은 없나요? A: 현재 DCGM은 MIG 환경에서 로우레벨 접근이 필요하므로 최소 SYS_ADMIN 수준의 권한이 요구됩니다. Q: MIG를 비활성화하면 GPU 성능에 영향이 있나요? A: MIG는 GPU 리소스 분할을 위한 기능으로, 단일 워크로드에 GPU를 할당할 경우 불필요합니다.

참고

출처