OS : Ubuntu 22.04.4 LTS
kind : version 0.24.0
nvidia graphic driver version : 550.90.07
이번에는 kind cluster 환경에서 GPU를 사용할 수 있는 환경을 구축해보겠습니다.
kind 설치와 환경 설정은 링크 에서 확인하시면 됩니다.
1. nvidia container toolkit 설치
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
2. 도커 설정
kind는 container를 사용하기 때문에, nvidia docker runtime 설정을 해야 합니다. (docker 사용을 추천드립니다.)
sudo nvidia-ctk runtime configure --runtime=docker --set-as-default
sudo systemctl restart docker
2-2. accept-nvidia-visible-devices-as-volume-mounts = true in /etc/nvidia-container-runtime/config.toml
해당 설정이 필요하다고 합니다.
sudo sed -i '/accept-nvidia-visible-devices-as-volume-mounts/c\accept-nvidia-visible-devices-as-volume-mounts = true' /etc/nvidia-container-runtime/config.toml
3. kind config file 설정 및 kind cluster 생성
kind 내에서 GPU를 사용할 노드에 필요한 설정을 합니다.
# kind.yaml 예시
- role: worker
image: kindest/node:v1.31.0@sha256:53df588e04085fd41ae12de0c3fe4c72f7013bba32a20e7325357a1ac94ba865
# GPU 사용을 위한 설정
extraMounts:
- hostPath: /dev/null
containerPath: /var/run/nvidia-container-devices/all
4. Nvidia GPU Operator 설치
GPU를 쿠버네티스에서 사용하기 위해서 필요한 것들은 다음과 같습니다.
- CUDA (Optional) - gpu 가속
- nvidia container toolkit
- nvidia graphic driver
- nvidia device plugin
이것들을 수동으로 하나씩 설치하여도 됩니다. 저는 gpu-operator를 이용하여 필요한 요소들을 간단하게 설치해보겠습니다.
CUDA는 gpu-operator에 내장되어 있지 않기 때문에 따로 설치해 주셔야 합니다.
먼저, CUDA를 설치하시려면 Graphic driver가 설치되어 있어야 하는데요.
저같은 경우에는 우분투를 설치할 때, 써드파티 그래픽 드라이버를 설치를 함께 하였기 때문에, 그래픽 드라이버가 설치되어 있는 상태입니다.
nvidia-smi
그래픽 드라이버가 설치되어있지 않으신 분들은 gpu-operator에 내장되어 있는 드라이버를 설치해 주시는게 좋습니다.
릴리즈 노트를 참고하세요.
CUDA 설치는 공식 아카이브에서 환경에 맞게 선택하여 설치해 주시면 됩니다.
주의하실 점은 nvidia-smi 명령어 출력 결과의 CUDA Version과 일치하는 버전의 CUDA toolkit을 설치해주셔야 합니다.
저는 12.4버전의 CUDA를 설치해 주었습니다.
설치가 완료되었다면, CUDA 설치가 잘 되었는지 확인합니다.
nvcc --version
만약 해당 오류가 발생하신다면 아래의 명령어를 실행하여, 파일을 수정해줍니다.
Command 'nvcc' not found
vi ~/.bashrc
export PATH="/usr/local/cuda/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"
# 저장 후 다음 명령어 실행
source ~/.bashrc
여기까지 포스팅을 따라오셨다면 현재 CUDA와 그래픽 드라이버는 설치되어 있으실 겁니다.
이제 gpu-operator를 helm을 이용하여 설치해봅시다.
Add gpu-operator helm repo
# helm 설치 후에 진행합니다.
helm repo add nvidia https://helm.ngc.nvidia.com/nvidia || true
helm repo update
gpu-operaotor 설치
저는 추후 모니터링을 위해 dcgm을 활성하여 설치하였습니다.
helm install --wait --generate-name \
-n gpu-operator --create-namespace \
nvidia/gpu-operator --set driver.enabled=false \
--set dcgm.enabled=true
helm 설치 옵션(values 파일) 을 확인해보시려면 다음 명령어를 실행하시면 됩니다.
helm show values nvidia/gpu-operator
k9s를 통해 배포된 pod들을 확인해보겠습니다.
node describe를 통해 사용할 수 있는 gpu 리소스를 확인하실 수 있습니다.
GPU 사용이 가능한지 확인해 보겠습니다.
gpu-test.yaml
apiVersion: v1
kind: Pod
metadata:
name: cuda-vectoradd
spec:
restartPolicy: OnFailure
containers:
- name: cuda-vectoradd
image: "nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda11.7.1-ubuntu20.04"
resources:
limits:
nvidia.com/gpu: 1
kubectl apply -f gpu-test.yaml
cuda-vectoradd pod의 컨테이너 로그를 확인해보시면 정상적으로 실행이 된 것을 확인하실 수 있습니다.
'Kubernetes' 카테고리의 다른 글
kubeflow 1.9 마이그레이션 (0) | 2024.09.22 |
---|---|
우분투 쿠버네티스 1.31 클러스터 생성하기 (1) | 2024.09.14 |
Ubuntu 22.04 환경에서 kind 클러스터 구축하기 (1) | 2024.08.31 |
쿠버네티스 + wsl2 (하지마세요...) (1) | 2024.08.25 |
EFK 구축 후기 - 2편 (2) | 2024.03.12 |