쿠버네티스 클러스터 내의 파드에서 GPU를 자원으로 사용하기위해서는 몇가지 설정을 해야한다.
Ubuntu 20.04 에서 Nvidia 그래픽카드를 사용하는 방법에 대해 작성한다.
NVIDIA 그래픽 드라이버 설치
우선 pc에 Nvidia 그래픽카드 드라이버 설치 여부부터 확인한다.
nvidia-smi
이 명령어를 커맨드 창에 입력해서 그래픽드라이버가 있는지 확인한다.

이런 화면이 나온다면 이미 드라이버가 설치되어있는 것이다. 하지만 나오지 않는다면 다음 명령어로 어떤 드라이버를 받아야하는지 확인 가능하다.
ubuntu-drivers devices

nvidia driver 535를 설치해야 하므로
sudo apt install nvidia-driver-535
위 명령어로 드라이버를 설치한다.
설치 후 다시 nvidia-smi 명령어를 입력하면 그래픽카드 정보가 나온다.
하지만
~$ nvidia-smi
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.
이러한 오류가 나오는 경우 대부분은 삭제 후 재설치 하면 해결 된다.
재설치에도 불구하고 안될 경우 커널 모듈 업데이트를 진행한다.
sudo update-initramfs -u
위 명령어로 커널 모듈을 업데이트 한 후 재부팅 하면 잘 설치된 것을 확인 할 수 있다.
CUDA 설치
nvidia-smi 명령어의 결과에서 cuda version 을 확인하여 알맞은 cuda toolkit 을 확인해야한다.
https://developer.nvidia.com/cuda-toolkit-archive
위 페이지에서 원하는 toolkit을 설치한다.

본인의 환경에 맞게 선택후 맨 밑의 명령을 이용해서 설치를 진행한다.
나는 리눅스 환경의 x86 arch, ubuntu 이므로 위와같이 선택하여 설치했다.
wget https://developer.download.nvidia.com/compute/cuda/12.2.2/local_installers/cuda_12.2.2_535.104.05_linux.run
sudo sh cuda_12.2.2_535.104.05_linux.run
위 명령어는 업데이트 될 수 있으므로 참고만 하고 직접 사이트에 들어가서 명령어를 사용해야한다.
이후 터미널 창에서 설치를 진행한 후 환경변수 설정을 해야한다.
/etc/profile 파일에 다음 내용을 추가한다.
export PATH=$PATH:/usr/local/cuda/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda>/lib64
export CUDADIR=/usr/local/cuda
이후 설정을 적용한다.
source /etc/profile
source ~/.bashrc
nvcc --version 명령으로 설치 여부를 확인한다.

위와 같은 내용이 나오면 cuda 설정이 마무리 된 것이다.
Container toolkit 설치
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html
위 링크를 따라 컨테이너 툴킷 설치를 진행한다.
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
- Containerd 구성
nvidia-ctk 명령어로 컨테이너 런타임을 구성한다.
컨테이너가 NVIDIA 컨테이너 런타임을 사용할 수 있도록 업데이트 진행한다.
sudo nvidia-ctk runtime configure --runtime=containerd
#containerd 재시작
sudo systemctl restart containerd
- GPU 사용을 위한 데몬셋 배포
NVIDIA device plugin DaemonSet을 배포하여 파드에서 GPU 리소스를 사용할 수 있도록 해야한다.
마스터 노드에서 다음 명령어로 데몬셋을 배포한다.
kubectl create -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.16.2/deployments/static/nvidia-device-plugin.yml
GPU 사용 여부 확인
-DeamonSet 상태 확인
kubectl get daemonset -n kube-system

nvidia-device-plugin-daemonset이 잘 배포되었는지 확인한다.
-각 노드의 플러그인 pod 확인
kubectl get pods -n kube-system -o wide | grep nvidia-device-plugin
위 명령어를 실행하면 각 데몬셋이 워커노드들에 성공적으로 배포되었는지 확인가능하다.

위와 같이 워커노드에서 데몬셋이 잘 실행되는 것을 확인 할 수 있다.
- 리소스 확인
각 노드에서 GPU를 리소스로 인식하는지 확인한다.
kubectl describe node 노드이름

Capacity와 Allocatable에 nvidia.com/gpu 라는 항목이 표시되어야하는데 나오지 않는다.
nvidia 드라이버와 cuda 설치는 제대로 확인했으므로 플러그인 설치에 문제가 있을 수 있다.
플러그인 삭제 후 다시 설치하니 다음과 같이 GPU 인식에 성공했다.

- GPU 사용 파드 테스트
이제 파드에서 gpu 자원을 제대로 사용하는지 확인해보자.
다음 코드로 확인해본다.
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Pod
metadata:
name: gpu-pod
spec:
restartPolicy: Never
containers:
- name: cuda-container
image: nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda12.5.0 ###이거 버전문제로 안되는거같음(지금 cuda 12.2 버전_
resources:
limits:
nvidia.com/gpu: 1 # requesting 1 GPU
tolerations:
- key: nvidia.com/gpu
operator: Exists
effect: NoSchedule
EOF
restartPolicy: Never 이므로 한번 실행되면 파드가 자동으로 사라지게 된다.
즉 일회성 테스트이다.
kubectl get pod 명령으로 파드 생성을 확인한다.
이후 파드 실행이 종료되면 다음 명령으로 파드의 로그를 확인해본다.
kubectl logs gpu-pod

이러한 로그가 나온다면 성공한 것이다.
이제 파드에서 GPU를 리소스로 사용할 수 있다.
'K8s' 카테고리의 다른 글
| Kubernetes 주요 리소스 정리 (0) | 2025.05.14 |
|---|---|
| init container - 초기화 컨테이너 (0) | 2025.04.24 |
| Ingress(인그레스)란 - K8s (0) | 2024.11.26 |