
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.
- What it is
- Container orchestration
- Part of
- Local Kubernetes
- 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 tunnelfor 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 pauseor 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.
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.
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.
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 --allSee 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
- 2016
v0.1.0 on May 30; official launch with Kubernetes 1.3 in July
- 2017
Experimental kubeadm bootstrapper in v0.22
- 2018
localkube removed in v0.29
- 2019
Version 1.0 in March
- 2020
Docker driver built on kind’s node image (v1.7); multi-node clusters (v1.9)
- 2026
v1.39.0 in September
- Kubernetes Blog: Minikube, easily run Kubernetes locally, by Dan Lorenc (Jul 2016)
- minikube v0.1.0 release on GitHub (May 2016)
- minikube CHANGELOG (kubeadm bootstrapper in 0.22.2, localkube removed in 0.29.0, Docker driver in 1.7.0, multi-node in 1.9.0 and 1.16.0)
- minikube v1.0.0 release on GitHub (Mar 2019)
- minikube v1.8.0 release on GitHub: Docker driver promoted (Mar 2020)
- minikube docs: Drivers
- minikube docs: Start (storage provisioner, tunnel)
- minikube docs: Welcome (latest release v1.39.0)
Sources9 · facts checked 6 October 2026
- minikube docs: Welcome (audience, highlights, supported versions, GPUs)
- minikube docs: Drivers
- minikube docs: Start (requirements, tunnel, ingress)
- minikube docs: FAQ (profiles, versions, kubeadm, production)
- minikube docs: Pushing images (default containerd runtime, image build and load)
- minikube docs: Using multi-node clusters
- minikube docs: Addons
- Kubernetes community: SIG Cluster Lifecycle subprojects (minikube)
- Kubernetes docs: Install tools (kind and minikube)