본문 바로가기

공부/컴퓨터

[Kubernetes] k3s에서 컨테이너를 띄웠는데 왜 GPU를 못 쓰지?

k3s에서 GPU를 왜 못쓰지?

  • docker를 설치하고, nvidiai-docker를 설치하고, k3s를 설치 했다.
  • docker를 이용해서 GPU를 사용하는 컨테이너를 띄웠을때는 GPU를 잘 사용하는데...
  • kubernetes에서 Pod를 띄우니 GPU를 못 사용하네? 왜 그럴까?

미리 정리하면...

  • 조건 : docker 설치. nvidia-docker 설치. k3s 설치
  • 문제 : Kubernetes에서 띄운 Pod에서 GPU를 사용하지 못함.
  • 해결 : k3s를 설치하면 기본적으로 containerd 를 사용하게 되어 있음. nvidia-docker를 써야만 GPU를 활용할 수 있음. 즉, k3s의 container runtime을 docker로 변경해야 함.
    • k3s 설치시 --docker 옵션 추가 필요
    • curl -sfL https://get.k3s.io | sh -s - --docker

좀 더 길게 적어 보면

왜 AI 엔진이 뜨지 않을까?

  • 오늘 k3s에서 AI 엔진을 띄우려고 했는데, 아무리해도 프로세스가 제대로 안 뜨는것이다.
  • nvidia-smi 명령을 이용해서 확인해도 python process가 안 뜨고 있었다.
  • docker ps -a 명령어를 쳐 보니.. 엇? container가 하나도 안 떠 있네?

왜 docker 컨테이너가 하나도 없지?

  • 확인 결과 k3s를 설치할때 아무런 옵션을 주지 않으면 container runtime을 containerd 를 사용하도록 된다.

k3s에서는 containerd를 default container runtime으로 사용한다.

  • 그러므로 docker ps -a 따위의 명령을 써도, 아무것도 안 떠 있는것처럼 보인 것이다.

k3s의 container runtime을 docker로 변경

  • 관련 링크 : https://rancher.com/docs/k3s/latest/en/advanced/
  • containerd 에서는 GPU를 사용하도록 설정하지 않았기 때문에, 당근 GPU를 사용할 수 없다.
  • 그러므로 GPU를 사용할 수 있도록 설정된 docker 를 k3s의 container runtime으로 사용하도록 설정해야 한다.
  • k3s 를 설치할때 container runtime을 docker로 지정해서 설치하면 된다.

--docker 옵션을 이용해서 default container runtime을 docker로 변경하자.

  • 이 작업 이후 docker ps -a 명령을 쓰면, kubernetes 관련된 많은 container들이 떠 있는것을 확인할 수 있다.

이제 docker ps 명령을 통해서 kubernetes에 떠 있는 container들을 볼 수 있다.