qemu

QEMU 驱动

概述

qemu 驱动使用 QEMU (系统) 来创建虚拟机。

https://www.qemu.org/

用法

要使用 qemu 驱动启动 minikube

minikube start --driver=qemu

特殊功能

minikube start 支持一些 qemu 特定的标志

  • --qemu-firmware-path:要使用的固件镜像的路径。
    • 注意:虽然该标志应该覆盖配置,但如果该标志不起作用,请尝试运行 minikube delete
    • MacPorts:如果您在 M1 芯片的 Mac 上通过 MacPorts 安装 minikubeqemu,请使用以下标志:--qemu-firmware-path=/opt/local/share/qemu/edk2-aarch64-code.fd

网络

QEMU 驱动程序有两个网络选项:socket_vmnetbuiltinsocket_vmnet 将为您提供完整的 minikube 网络功能,例如 servicetunnel 命令。另一方面,builtin 网络不是专用网络,因此诸如 servicetunnel 之类的命令不可用。socket_vmnet 可以通过 brew 或从源代码安装(说明如下)。

要求

需要 macOS 10.15 或更高版本和 socket_vmnet

通过 brew 安装 socket_vmnet

brew install socket_vmnet
brew tap homebrew/services
HOMEBREW=$(which brew) && sudo ${HOMEBREW} services start socket_vmnet

从源代码安装 socket_vmnet (需要 Go)

git clone https://github.com/lima-vm/socket_vmnet.git && cd socket_vmnet
sudo make install

用法

minikube start --driver qemu --network socket_vmnet

用法

minikube start --driver qemu --network builtin

已知问题

/var/db/dhcpd_leases 错误

如果您看到与 /var/db/dhcpd_leases 相关的错误,则您的防火墙很可能正在阻止 bootpd 进程。

运行以下命令以从 macOS 内置防火墙中解除对 bootpd 的阻止

sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /usr/libexec/bootpd
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblock /usr/libexec/bootpd

在公司机器或使用自定义 DNS 时启动卡住

当使用 builtin 网络(默认)时,guest 使用主机 /etc/resolv.conf 中的第一个 nameserver 条目进行 DNS 查找。如果您的第一个 nameserver 条目是公司/内部 DNS,则很可能会导致问题。如果您在 minikube start 上看到警告 ❗ This VM is having trouble accessing https://registry.k8s.io,则您很可能受到此问题的影响。这可能会阻止您的集群完全启动,并且您将无法拉取远程镜像。更多详细信息可以在以下位置找到:#15021

解决方法

  1. 如果可能,请重新排序您的 /etc/resolv.conf,使通用的 nameserver 条目(例如 8.8.8.8)优先,然后重新启动您的机器。
  2. 使用 --network=socket_vmnet

打开的“qemu”驱动程序问题的完整列表

故障排除

  • 运行 minikube start --alsologtostderr -v=4 来调试崩溃

上次修改时间为 2023 年 6 月 22 日:site: 更新 dhcpd_leases 问题的修复 (3dbf625e8)