【问题标题】:Cannot use GPU on Minikube with Docker driver无法通过 Docker 驱动程序在 Minikube 上使用 GPU
【发布时间】:2020-06-15 18:16:45
【问题描述】:

目标:

我正在尝试在使用默认 Docker 驱动程序的 Minikube 集群上使用 Nvidia GPU 功能。

问题:

我可以将nvidia-docker 与默认的docker 上下文一起使用,但是当切换到minikube docker-env 时出现以下错误:

$ docker run --gpus all nvidia/cuda:10.0-base nvidia-smi
docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]].
ERRO[0000] error waiting for container: context canceled

环境:

  • Ubuntu 18.04
  • Minikube v1.10.0
  • Docker 版本:
$ docker version
Client: Docker Engine - Community
 Version:           19.03.10
 API version:       1.40
 Go version:        go1.13.10
 Git commit:        9424aeaee9
 Built:             Thu May 28 22:16:49 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server:
 Engine:
  Version:          19.03.2
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.9
  Git commit:       6a30dfca03
  Built:            Wed Sep 11 22:45:55 2019
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.3.3-14-g449e9269
  GitCommit:        449e926990f8539fd00844b26c07e2f1e306c760
 runc:
  Version:          1.0.0-rc10
  GitCommit:        
 docker-init:
  Version:          0.18.0
  GitCommit:
  • Nvidia 容器运行时版本:
$ nvidia-container-runtime --version
runc version 1.0.0-rc10
commit: dc9208a3303feef5b3839f4323d9beb36df0a9dd
spec: 1.0.1-dev

其他信息:

集群是通过以下方式创建的:

minikube start --cpus 3 --memory 8G

以下minikube 插件当前已启用:

$ minikube addons list
|-----------------------------|----------|--------------|
|         ADDON NAME          | PROFILE  |    STATUS    |
|-----------------------------|----------|--------------|
| dashboard                   | minikube | disabled     |
| default-storageclass        | minikube | enabled ✅    |
| efk                         | minikube | disabled     |
| freshpod                    | minikube | disabled     |
| gvisor                      | minikube | disabled     |
| helm-tiller                 | minikube | disabled     |
| ingress                     | minikube | disabled     |
| ingress-dns                 | minikube | disabled     |
| istio                       | minikube | disabled     |
| istio-provisioner           | minikube | disabled     |
| logviewer                   | minikube | disabled     |
| metallb                     | minikube | disabled     |
| metrics-server              | minikube | disabled     |
| nvidia-driver-installer     | minikube | enabled ✅    |
| nvidia-gpu-device-plugin    | minikube | enabled ✅    |
| registry                    | minikube | disabled     |
| registry-aliases            | minikube | disabled     |
| registry-creds              | minikube | disabled     |
| storage-provisioner         | minikube | enabled ✅    |
| storage-provisioner-gluster | minikube | disabled     |
|-----------------------------|----------|--------------|

这是minikube 上下文之外的工作示例:

$ docker run --gpus all nvidia/cuda:10.0-base nvidia-smi
Fri Jun  5 09:23:49 2020       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.59       Driver Version: 440.59       CUDA Version: 10.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 106...  Off  | 00000000:01:00.0  On |                  N/A |
|  0%   51C    P8     6W / 120W |   1293MiB /  6077MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
+-----------------------------------------------------------------------------+

【问题讨论】:

  • 你试过这篇文章了吗? minikube.sigs.k8s.io/docs/tutorials/nvidia_gpu
  • @nischaygoyal 这篇文章是关于其他 minikube 驱动程序的,所以对于 docker 驱动程序来说可能是不可能的
  • 当你试图用 minikube 运行它时,这就是为什么给你一篇 minikube 的文章
  • @Ash 它没有正式记录,可能不可能这样。但是,this 尤其是this 可能会有所帮助。你见过/试过吗?
  • @OhHiMark 是的,我已经安装了nvidia-docker,k8s 插件也是如此,尽管我的测试用例还没有达到 k8s。

标签: docker gpu minikube nvidia-docker


【解决方案1】:

这是一个社区 wiki 答案。如果需要,请随意编辑和扩展它。

Minikube 的 docker 驱动程序不正式支持 Nvidia GPU。这为您提供了两种可能的选择:

  1. 尝试使用NVIDIA Container ToolkitNVIDIA device plugin。这是一种解决方法,在您的用例中可能不是最佳解决方案。

  2. 使用KVM2 driverNone driver。这两个是官方支持和记录的。

希望对你有帮助。

【讨论】:

  • 能否详细说明#1 -- 是否有关于使用这些工具创建具有 nvidia 容量的 minikube 节点的说明?
猜你喜欢
  • 2020-10-22
  • 2021-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-06
  • 2017-04-23
  • 2019-06-20
  • 1970-01-01
相关资源
最近更新 更多