vfkit

Overview

VFKit is an open-source program for macOS virtualization, optimized for lightweight virtual machines and container deployment.

Networking

The vfkit driver has two networking options: nat and vmnet-shared. The nat network is always available, but it does not provide access between minikube clusters. To access other clusters or run multi-node cluster, you need the vmnet-shared network. The vmnet-shared network requires vmnet-helper, see installation instructions bellow.

Requirements

  • Requires macOS 10.15 or later
  • Requires minikube version 1.36.0 or later.
  • Requires vmnet-helper.

Install vment-helper

tag="$(curl -fsSL https://api.github.com/repos/nirs/vmnet-helper/releases/latest | jq -r .tag_name)"
machine="$(uname -m)"
archive="vmnet-helper-$tag-$machine.tar.gz"
curl -LOf "https://github.com/nirs/vmnet-helper/releases/download/$tag/$archive"
sudo tar xvf "$archive" -C / opt/vmnet-helper
rm "$archive"

The command downloads the latest release from github and installs it to /opt/vmnet-helper.

IMPORTANT: The vmnet-helper executable and the directory where it is installed must be owned by root and may not be modifiable by unprivileged users.

Grant permission to run vmnet-helper

The vment-helper process must run as root to create a vmnet interface. To allow users in the staff group to run the vmnet helper without a password, you can install the default sudoers rule:

sudo install -m 0640 /opt/vmnet-helper/share/doc/vmnet-helper/sudoers.d/vmnet-helper /etc/sudoers.d/

You can change the sudoers configuration to allow access to specific users or other groups.

Usage

minikube start --driver vfkit --network vmnet-shared

Usage

minikube start --driver vfkit [--network nat]

The nat network is used by default if the --network option is not specified.

Issues

Other

Troubleshooting

Run with logs

Run minikube start --driver vfkit --alsologtostderr -v=7 to debug crashes

Upgrade VFKit

New updates to macOS often require an updated vfkit driver. To upgrade:

  • If Podman Desktop is installed, it also bundles vfkit
  • If you have Brew Package Manager, run: brew upgrade vfkit
  • As a final alternative, you install the latest VFKit from GitHub
  • To check your current version, run: vfkit -v
  • If the version didn’t change after upgrading verify the correct VFKit is in the path. run: which vfkit

Troubleshooting the vmnet-shared network

Check for errors in vment-helper log:

$MINIKUBE_HOME/.minikube/machines/MACHINE-NAME/vmnet-helper.log

Check that the vmnet-helper process is running:

ps au | grep vmnet-helper | grep -v grep

If the helper is not running restart the minikube cluster.

For help with vment-helper please use the discussions.