Ubuntu 22.04: Minikube + docker で Nvidia GPU を使う

 
個人用に GPU が使える K8S 環境が欲しかったのでメモ。

 

Docker

まずは docker のインストール

sudo apt install ca-certificates curl gnupg wget apt-transport-https -y
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
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

それから、現在のユーザーでも docker を使えるようにする。

sudo usermod -aG docker $USER
sudo chmod 666 /var/run/docker.sock

これで一旦ログアウトして、再ログインすれば docker を使える。

 

Minikube

つづいて Minikube のインストール

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube

kubectl もインストールする

curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl
chmod +x kubectl
sudo mv kubectl /usr/local/bin/

Nvidia GPU

最後に Nvidia GPU 関連のインストール。
先に Nvidia ドライバーはインストールしておく事。

echo "net.core.bpf_jit_harden=0" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

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 update
sudo apt install -y nvidia-container-toolkit

Docker で Nvidia Container Tookit を使うように設定する。

sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

最後に Minikube を起動

minikube start --driver docker --container-runtime docker --gpus all

おまけ

minikube のデフォルト RAM は 2GB なので、これを 8GB に増やす。
あと CPU コアもデフォルトで 2 なのでこれを 4 にする。

minikube config set memory 8192
minikube config set cpus 4
minikube config view
# - cpus: 4
# - memory: 8192

config を変えたら minikube クラスタを削除してから再起動。

minikube delete
minikube start --driver docker --container-runtime docker --gpus all