Cloud Parts

minikube

A local Kubernetes cluster for developers on Linux, macOS or Windows, in a container, a VM or on the host itself, with laptop-friendly extras.

Type
Open source
Made by
Kubernetes project (SIG Cluster Lifecycle)
License
Apache 2.0
Facts checked
6 October 2026

What it is

minikube runs a local cluster inside whatever isolation your machine offers. A driver decides what a “node” is: a container in Docker or Podman, a virtual machine under KVM, Hyper-V, QEMU, VirtualBox, VFkit, Parallels or VMware, an existing machine over SSH, or, with the none driver, the host itself. minikube boots that node and sets up Kubernetes with kubeadm, using containerd by default, or CRI-O or Docker. Several clusters live side by side as named profiles, each with its own driver and settings, and --nodes adds more nodes on the same machine.

Its stated audience is “application developers and new Kubernetes users”, and it fills the gaps a laptop has compared with a cloud. minikube tunnel gives LoadBalancer Services a reachable IP, addons switch on ingress, a registry and other extras with one command, minikube image build builds straight into the cluster, and --kubernetes-version picks the latest release or any of the six minor versions before it. Where kind is tuned for disposable test clusters in CI, and K3s and MicroK8s also aim at production, minikube’s FAQ says “we strongly discourage using minikube in production”, and by design it listens only on the local network.

Why teams pick it

  • One tool on Linux, macOS and Windows, with a choice of container, VM, SSH or bare-metal drivers
  • Extras a laptop lacks: minikube tunnel for LoadBalancer Services, minikube service, filesystem mounts and one-command addons such as ingress and a registry
  • Runs the latest Kubernetes or one of the six previous minor versions, per cluster, with several clusters as profiles
  • GPU support (NVIDIA, AMD, Apple) for local AI work, and minikube pause or the auto-pause addon to stop Kubernetes eating battery

Watch out for

  • Explicitly not for production or remote traffic; it is meant to listen only on the local network
  • Each cluster wants 2 CPUs, 2 GB of free memory and 20 GB of disk, and a VM driver adds a whole guest operating system
  • Multi-node clusters still run on one host, so they exercise scheduling across nodes, not real hardware failure
  • Behaviour depends on the driver: Podman is experimental, and on macOS and Windows the Docker driver runs containers inside a VM

More of the Kubernetes family

What all container orchestration have in common →
kindOpen sourceFor local developmentKubernetes IN Docker: each cluster node is a container, so a conformant multi-node cluster starts and disappears inside a CI job.Amazon EKSAWSManaged servicesAWS runs the Kubernetes control plane for you; you choose how much of the worker side to hand over too.Azure Kubernetes ServiceAzureManaged servicesMicrosoft’s managed Kubernetes: a control plane that can be free, node pools of Azure VMs, and an Automatic mode that runs the nodes too.Google Kubernetes EngineGoogle CloudManaged servicesGoogle’s managed Kubernetes, the oldest one: Google runs the control plane, and in Autopilot mode the nodes too.K3sOpen sourceDistributionsA certified Kubernetes distribution in one small binary, built for edge, IoT and other places where a full cluster is too heavy, with SQLite or embedded etcd for state.MicroK8sOpen sourceDistributionsCanonical’s Kubernetes in one snap package: installs with one command on Linux, forms a highly available cluster by itself at three nodes, and adds features as addons.Red Hat OpenShiftCommercialDistributionsRed Hat’s Kubernetes platform: Kubernetes plus its own OS, operators that install and upgrade everything, and stricter security defaults, sold by subscription.RKE2Open sourceDistributionsSUSE’s security-focused Kubernetes distribution: one binary per node, hardened defaults, FIPS-validated crypto and close alignment with upstream.Talos LinuxOpen sourceDistributionsA Linux distribution that only runs Kubernetes: immutable, minimal, with no shell or SSH, and managed entirely through an API.kubeadmOpen sourceToolsThe official tool for turning Linux machines you already have into a Kubernetes cluster: `kubeadm init`, then `kubeadm join`.RancherOpen sourceToolsSUSE’s open-source control plane for fleets of Kubernetes clusters: one place to create, import, secure and upgrade them.AgonesOpen sourceBuilt on itRuns dedicated multiplayer game servers on Kubernetes: keeps a fleet of them warm, hands one to each match, and never kills a server while players are on it.KlutchOpen sourceBuilt on itA young open-source control plane, built on Crossplane, that lets many application clusters order databases from one central Kubernetes cluster.

How it fits with other technologies

A two-node cluster with ingress, an image built in place and a LoadBalancer Service · bash

minikube start --driver=docker --nodes 2 --kubernetes-version=v1.36.0
minikube addons enable ingress

minikube image build -t my-app:dev .      # built straight into the cluster
kubectl create deployment web --image=my-app:dev
kubectl expose deployment web --type=LoadBalancer --port=8080
minikube tunnel                           # in another terminal: gives it an EXTERNAL-IP

minikube start -p vm-test --driver=qemu   # a second, VM-based cluster
minikube profile list
minikube delete --all

See it in a real stack

No architecture uses minikube yet. Drop it into the playground and wire it up yourself.Open playground →
Where it came from2016–2026

In July 2016 Kubernetes had been production-ready for over a year, but, as Google’s Dan Lorenc wrote on the Kubernetes blog, it “has been missing a great local development platform”. Community members set out to build “an easy-to-use, high-fidelity Kubernetes distribution” that would run on Mac, Linux and Windows laptops with a single command. The first release, v0.1.0, came on May 30, 2016 with Linux and macOS binaries, and the official launch accompanied Kubernetes 1.3 that July.

The first design borrowed two pieces. Docker’s libmachine supplied a driver model for creating local VMs (VirtualBox at first, with experimental xhyve and KVM drivers). RedSpread donated localkube, which bundled etcd, DNS, the kubelet and all the control-plane components into one Go binary that ran them as goroutines. minikube later moved to kubeadm, the upstream bootstrapping tool: an experimental kubeadm bootstrapper arrived in v0.22 (September 2017), and localkube was removed in v0.29 (September 2018).

Containers came later. v1.7 (February 2020) added an experimental Docker driver that used kind’s node image, v1.8 promoted it, and the docs now list it as a preferred driver on all three systems. Multi-node clusters arrived as an experiment in v1.9 (March 2020) and lost the experimental label in v1.16 that December.

Why it’s built this way

A driver model for each operating system
Reusing Docker’s libmachine gave minikube a ready-made way to create and manage local VMs, so the same cluster could run on Mac, Linux and Windows. The same model later absorbed container, SSH and bare-metal drivers.
From one binary to kubeadm
localkube made the first cluster a single, quick-to-start process. Switching to kubeadm made minikube set up the official components the way regular clusters do, closer to the original “high-fidelity” goal.
Commands for what a laptop lacks
The 2016 launch post noted that LoadBalancers and PersistentVolumes didn’t work out of the box on a local machine. minikube tunnel, the bundled storage provisioner and addons now fill those gaps.

Timeline

  1. 2016

    v0.1.0 on May 30; official launch with Kubernetes 1.3 in July

  2. 2017

    Experimental kubeadm bootstrapper in v0.22

  3. 2018

    localkube removed in v0.29

  4. 2019

    Version 1.0 in March

  5. 2020

    Docker driver built on kind’s node image (v1.7); multi-node clusters (v1.9)

  6. 2026

    v1.39.0 in September

Sources9 · facts checked 6 October 2026

Improve this page on GitHub