chmod +x NVIDIA-Linux-x86_64*.run
./NVIDIA-Linux-x86_64*.run
nvidia-docker 설치
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update && sudo apt-get install -y nvidia-docker2
sudo systemctl restart docker
{
"default-runtime": "nvidia",
"runtimes": {
"nvidia": {
"path": "/usr/bin/nvidia-container-runtime",
"runtimeArgs": []
}
}
}
curl -o nvidia-device-plugin.yml https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.11.0/nvidia-device-plugin.yml
helm repo add nvdp https://nvidia.github.io/k8s-device-plugin
helm repo update
helm pull --untar nvdp/nvidia-device-plugin
vi nvidia-device-plugin/values.yaml
cp nvidia-device-plugin/values.yaml values/value-nvidia-device-plugin.yml
vi values/value-nvidia-device-plugin.yml
nodeSelector:
node.resource/gpu: "true"
helm install \
--values=values/value-nvidia-device-plugin.yml \
nvidia-device-plugin \
nvidia-device-plugin/
failOnInitError:
fail the plugin if an error is encountered during initialization, otherwise block indefinitely
초기화 중에 오류가 발생하면 플러그인을 실패로 처리하고, 다른 경우엔 무기한 차단
(default 'true')
compatWithCPUManager:
run with escalated privileges to be compatible with the static CPUManager policy
고정된 CPUManger 정책과 호환되도록 상승된 권한으로 실행
(default 'false')
legacyDaemonsetAPI:
use the legacy daemonset API version 'extensions/v1beta1'
예전 daemonset 'extensions/v1beta1' API 버전을 호환
(default 'false')
migStrategy:
the desired strategy for exposing MIG devices on GPUs that support it
MIG를 지원하는 GPU에 MIG 장치를 노출하는 방법 선택
[none | single | mixed] (default "none")
deviceListStrategy:
the desired strategy for passing the device list to the underlying runtime
기본 런타임에 장치 목록을 전달하기 위해 사용하는 방법 선택
[envvar | volume-mounts] (default "envvar")
deviceIDStrategy:
the desired strategy for passing device IDs to the underlying runtime
기본 런타임에 장치 ID를 전달하기 위해 사용하는 방법 선택
[uuid | index] (default "uuid")
nvidiaDriverRoot:
the root path for the NVIDIA driver installation (typical values are '/' or '/run/nvidia/driver')
NVIDIA 드라이버 설치하는 루트 경로 지정 (/ 혹은 /run/nvidia/drive)
runtimeClassName:
the runtimeClassName to use, for use with clusters that have multiple runtimes. (typical value is 'nvidia')
여러 런타임이 있는 클러스터를 사용하는 경우 runtimeClassNmae 지정 (defaul 는 nvidia)
apiVersion: apps/v1
kind: Deployment
metadata:
name: cuda-gpu-test
labels:
app: gpu-test
spec:
replicas: 1
selector:
matchLabels:
app: gpu-test
template:
metadata:
labels:
app: gpu-test
spec:
containers:
- name: cuda
image: nvidia/cuda:10.0-base
command: [ "sh", "-c" ]
args: ["nvidia-smi && sleep 300"]
resources:
limits:
nvidia.com/gpu: 2
안녕하세요 좋은 포스트 감사합니다. 혹시 클러스터의 기본 컨테이너 런타임을 도커로 사용하신 건가요?? containerd의 경우에는 device plugin이 제대로 gpu를 인식하지 못하는 것 같아서요 ㅠㅠ