使用 NVIDIA GPU 和 minikube

先决条件

  • Linux
  • 最新的 NVIDIA GPU 驱动程序
  • minikube v1.32.0-beta.0 或更高版本(仅限 docker 驱动程序)

按驱动程序说明

使用 docker 驱动程序

  • 确保您已安装 NVIDIA 驱动程序,您可以通过运行 nvidia-smi 进行检查,如果未安装,请按照 NVIDIA 驱动程序安装指南进行操作

  • 检查 bpf_jit_harden 是否设置为 0

    sudo sysctl net.core.bpf_jit_harden
    
    • 如果不是 0,则运行
    echo "net.core.bpf_jit_harden=0" | sudo tee -a /etc/sysctl.conf
    sudo sysctl -p
    
  • 使用以下方法之一安装 NVIDIA 支持

  • 配置 Docker

    sudo nvidia-ctk runtime configure --runtime=docker && sudo systemctl restart docker
    
  • 删除现有的 minikube(可选)

    如果您有现有的 minikube 实例,并且它是在安装 nvidia runtime shim 之前构建的,您可能需要将其删除。

    minikube delete
    

    这将确保 minikube 现在可以执行任何必需的设置或附加组件安装,因为 nvidia runtime 已可用。

  • 使用以下方法之一启动 minikube

    • NVIDIA Container Toolkit
      minikube start --driver docker --container-runtime docker --gpus all
      
    • NVIDIA CDI 资源
      minikube start --driver docker --container-runtime docker --gpus nvidia.com
      

使用 ’none’ 驱动程序

注意:此处用于公开 GPU 的方法与使用 --driver=kvm 公开 GPU 的方法不同。请勿混用这些说明。

  • 安装 minikube。

  • 安装 nvidia 驱动程序、nvidia-docker,并配置 docker 以将 nvidia 作为默认运行时。请参阅 https://github.com/NVIDIA/nvidia-docker 上的说明

  • 启动 minikube

    minikube start --driver=none --apiserver-ips 127.0.0.1 --apiserver-name localhost
    
  • 安装 NVIDIA 的设备插件

    minikube addons enable nvidia-device-plugin
    

使用 kvm 驱动程序

将 NVIDIA GPU 与 kvm 驱动程序一起使用时,我们将主机上的备用 GPU 直通到 minikube VM。这样做有一些先决条件

  • 您的 CPU 必须支持 IOMMU。不同的供应商对此技术有不同的名称。Intel 称之为 Intel VT-d。AMD 称之为 AMD-Vi。您的主板也必须支持 IOMMU。

  • 您必须在内核中启用 IOMMU:在内核命令行中添加 intel_iommu=onamd_iommu=on(取决于您的 CPU 供应商)。还要在内核命令行中添加 iommu=pt

  • 您必须拥有未在主机上使用且可以直通到 VM 的备用 GPU。这些 GPU 不得由 nvidia/nouveau 驱动程序控制。您可以通过在主机上根本不加载 nvidia/nouveau 驱动程序,或者在启动时将备用 GPU 设备分配给诸如 vfio-pcipci-stub 之类的 stub 内核模块来确保这一点。您可以通过将备用 GPU 的 vendorId:deviceId 添加到内核命令行来做到这一点。例如,对于 Quadro M4000,请在内核命令行中添加 pci-stub.ids=10de:13f1。请注意,您必须对所有要直通到 VM 的 GPU 以及这些 GPU 的 IOMMU 组中的所有其他设备执行此操作。

  • 完成上述操作后重新启动系统,您应该可以使用带有 kvm 的 GPU 了。运行以下命令启动 minikube

    minikube start --driver kvm --kvm-gpu
    

    此命令将检查是否满足上述所有条件,并将主机上找到的备用 GPU 直通到 VM。

    如果成功,请运行以下命令

    minikube addons enable nvidia-device-plugin
    minikube addons enable nvidia-driver-installer
    

    注意:nvidia-gpu-device-plugin 附加组件已被弃用,其功能已合并到 nvidia-device-plugin 附加组件中。

    这将在 VM 上安装 NVIDIA 驱动程序(适用于 GeForce/Quadro 卡)。

  • 如果一切成功,您应该能够在容量中看到 nvidia.com/gpu

    kubectl get nodes -ojson | jq .items[].status.capacity
    

我在哪里可以了解有关 GPU 直通的更多信息?

请参阅 https://wiki.archlinux.org.cn/index.php/PCI_passthrough_via_OVMF 上的优秀文档

为什么在 minikube 上使用 kvm 和 GPU 需要如此多的手动步骤?

这些步骤需要提升的权限,而 minikube 运行时没有这些权限,并且它们会对主机造成干扰,因此我们决定不自动执行它们。

为什么 minikube 不支持 macOS 上的 NVIDIA GPU?

minikube 支持 macOS 的驱动程序不支持 GPU 直通

此外

  • 在很长一段时间内,所有 Mac 硬件(笔记本电脑和台式机)都配备 Intel 或 AMD GPU(而非 NVIDIA GPU)。最近,Apple 添加了 对 eGPU 的支持,但即使如此,列出的所有受支持的 GPU 都是 AMD 的。

  • nvidia-docker 也不支持 macOS

为什么 minikube 不支持 Windows 上的 NVIDIA GPU?

minikube 通过 Hyper-V 或 VirtualBox 支持 Windows 主机。

由于在 Windows 上支持 minikube 上的 GPU 的唯一可能性是在用户通常不运行 minikube 的服务器操作系统上,因此我们没有投入时间尝试在 Windows 上的 minikube 上支持 NVIDIA GPU。

此外,nvidia-docker 也不支持 Windows


上次修改时间:2025 年 9 月 27 日:kvm: Convert to internal driver (7bc97d7ce)