Containerd 로 GPU Kubernetes 클러스터 구축하기

하설·2023년 7월 6일
0
post-thumbnail

Nvidia GPU Driver 설치

1. nvidia gpu driver 버전 확인을 위한 패키지 설치

sudo apt-get install -y ubuntu-drivers-common

2. gpu driver 버전 확인

ubuntu-drivers devices 커맨드 결과로 나온 것들 중 recommended 라고 나온 왼쪽의 버전 확인

3. gpu driver 설치

sudo apt-get install -y nvidia-drvier-<위에서 확인한 버전>

4. 설치 확인

아래 커맨드를 통해 정상적으로 GPU 리스트가 출력되는지 확인

nvidia-smi

Containerd 설치

1. docker apt 레포지토리 등록을 위해 필요한 패키지 설치

sudo apt-get udpate

sudo apt-get install ca-certificates curl gnupg

2. docker apt 레포지토리 등록

sudo install -m 0755 -d /etc/apt/keyrings

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

sudo chmod a+r /etc/apt/keyrings/docker.gpg

echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

3. Containerd 설치

sudo apt-get update

sudo apt-get install -y containerd.io

4. Containerd 설정

sudo mkdir -p /etc/containerd

sudo containerd config default | sudo tee /etc/containerd/config.toml

5. 설정 적용

sudo systemctl restart containerd

Containerd with Nvidia-Container-Toolkit 설치

1. nvidia container toolkit apt 레포지토리 등록

distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
      && 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/$distribution/libnvidia-container.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

2. nvidia container toolkit 설치

sudo apt-get update

sudo apt-get install -y nvidia-container-toolkit

3. containerd 의 config 에 nvidia container runtime 추가

/etc/containerd/config.toml 파일에 [plugins."io.containerd.grpc.v1.cri".containerd.runtimes] 하위에 아래 내용 추가

        [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia]
          privileged_without_host_devices = false
          runtime_engine = ""
          runtime_root = ""
          runtime_type = "io.containerd.runc.v1"
          [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia.options]
            BinaryName = "/usr/bin/nvidia-container-runtime"
            SystemdCgroup = true

4. containerd 의 default runtime 을 nvidia 로 변경

[plugins."io.containerd.grpc.v1.cri".containerd] 하위에 default_runtime_name 의 값을 "nvidia" 로 변경

5. containerd 재시작

sudo systemctl restart containerd

6. 테스트

sudo ctr image pull docker.io/nvidia/cuda:11.0.3-base-ubuntu20.04

sudo ctr run --rm --gpus 0 -t docker.io/nvidia/cuda:11.0.3-base-ubuntu20.04 cuda-11.0.3-base-ubuntu20.04 nvidia-smi

위 커맨드 실행 결과가 아래처럼 GPU 가 인식되었다면 성공 (내용이 동일할 필요 없음)

profile
리자몽이 되고픈 파이리 데이터 엔지니어

0개의 댓글