더듬이

[Kubernetes] gpu 장비 에러 nvidia-container-cli Error nvidia-device-plugin RunContinerError 본문

Kubernetes

[Kubernetes] gpu 장비 에러 nvidia-container-cli Error nvidia-device-plugin RunContinerError

dbhang 2021. 7. 1. 20:33

상황 설명 

 

master node는 얌전한데 gpu카드가 있는 worker node가 고장난 상황이였다.

reaboot 한 이후에 gpu pods에 대한 생성,삭제 기능이 pending 걸리는 현상이 발생되었다.

자세히 확인해보니 nvidia-device-plugin pods에 RunContainerError 가 발생하였고 아래와 같은 로그를 확인할 수 있었다.

Error: failed to start container "nvidia-device-plugin-ctr": 
Error response from daemon: OCI runtime create failed: 
container_linux.go:349: starting container process caused
"process_linux.go:449: container init caused \"process_linux.go:432: 
running prestart hook 0 caused 
\\\"error running hook: exit status 1, 
stdout: , stderr: nvidia-container-cli: initialization error: cuda error: initialization error\\\\n\\\"\"": unknown

 

nvidia-container-cli: initialization error: cuda error: initialization error

 

nvidia-container-cli 관련 에러같았다.

 

해당 이슈발생한 worker node에 docker status는 정상이였고  아래 명령어를 통해 nvidia-container-cli 의 상태를 확인해보니

nvidia-container-cli -k -d /dev/tty info

 

맨 아랫줄에 pod 로그에 적힌 에러와 똑같은 에러가 나고 있었다.

얘가 비정상이여서 container 시작시에 nvidia runtime을 사용하는 모든 도커가 아래와 같은 에러가 발생중이였다...후...

nvidia-container-cli: initialization error: cuda error: initialization error

 

해결방법 (nvidia-plugin pods 삭제 후 docker 재시작)

 

먼저 nvidia-device-plugin 을 master에서 잠시 지워준다. (제일 중요) 

kubectl delete -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.9.0/nvidia-device-plugin.yml

dockcer 설정 파일이 정상인지 확인해야한다.

vi /etc/docker/daemon.json

아래 와 같이 런카임이 지정되어있어야한다.

 {
    "default-runtime": "nvidia",
    "runtimes": {
        "nvidia": {
            "path": "/usr/bin/nvidia-container-runtime",
            "runtimeArgs": []
        }
    }
}

그 후에 데몬 바뀐거 적용하고 도커 재시작

systemctl daemon-reload
systemctl restart docker

아까와 같이 아래 명령어로 nvidia-container-cli 확인 했을때

nvidia-container-cli -k -d /dev/tty info

아래와 같이 나오면 성공!

I0701 02:40:04.191976 45826 nvc.c:318] shutting down library context
I0701 02:40:04.197404 45828 driver.c:192] terminating driver service
I0701 02:40:04.237991 45826 driver.c:233] driver service terminated successfully

다시 nvidia-plugin 을 master에서 배포해준다.

kubectl create -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.9.0/nvidia-device-plugin.yml

 

원인

이게... k8s-device-plugin 정책에 때문이라는데...

docker가 잘못 실행된게 큰것 같다.

 

혹시 같은 에러 해결한 경험 있으신 분은 제발 댓글좀 ㅜㅜㅜ 

자세한 내용은 추후에 알게되면 추가하겠습니다. 아래는 참고한 사이트!

 

https://forums.developer.nvidia.com/t/nvidia-container-cli-driver-error-when-trying-to-run-nvidia-docker-on-jetson-nano/144851/4