You can learn Kubernetes and test an application without renting cloud servers. A local cluster runs Kubernetes on your own computer and gives you a place to install, break and rebuild things without touching production.

kind runs Kubernetes nodes as containers and is useful for repeatable test clusters. minikube provides a local Kubernetes environment with a choice of drivers and add-ons. Docker Desktop includes a Kubernetes option within its desktop container environment. For kind versus minikube, choose kind when quickly creating and discarding clusters is the main job; choose minikube when its local drivers and learning conveniences fit your setup. Choose Docker Desktop when you already use it and want the integrated option.

Choose a local cluster for the test

Use a disposable local cluster to learn Kubernetes APIs, render charts and reproduce application behavior. kind is useful for clusters built from container nodes; minikube offers several local drivers and add-on workflows. Check host architecture and container-runtime requirements before choosing.

The recovered comparison below is historical. Docker Desktop now offers kubeadm and kind provisioning; its Kubernetes integration is unavailable in Windows container mode. Minishift is no longer actively maintained and runs OpenShift 3.x, while its upstream directs local OpenShift 4.x users to CRC. Choose against current platform requirements rather than the old role-based rankings.

A laptop cluster does not reproduce a cloud load balancer, managed identity, regional storage or production availability. State those gaps in test results. Keep test kubeconfig separate from production, give the cluster a distinctive name and verify the context before destructive experiments. Export fixtures and results so that deleting the local cluster is safe.

The original record

Historical Kubedex content

Original publication: 2018-11-03T05:14:57+00:00. Preserved for context. Commands, versions, prices and results below reflect the original research.

Reading Time: 4 minutes

Last Updated on December 10, 2018

We’ve investigated options for running Kubernetes in the cloud and Kubernetes On-Prem. What about options for running Kubernetes on your desktop and laptop?

This blog compares four options you can choose from today. As you can see from the table below we’re looking at Minikube vs Docker Desktop vs MicroK8s vs Minishift.

Historical illustration

As with all of the comparisons you can view the spreadsheet here. Leave a comment if you’d like anything changed.

I’ll start off by pointing out that these options are all quite differentiated. Unlike the array of On-Prem Kubernetes solutions, where many exist for truly no reason at all, I believe there is a case to be made for the existence of each of the local Kubernetes options being reviewed.

We’ll go through each and then I’ll summarise with a table at the end.

Minikube

They say that Kubernetes was built by systems engineers for systems engineers. Minikube is the original way to run Kubernetes locally and as you may imagine it’s the best option currently for systems engineers. If your company is running vanilla Kubernetes either On-Prem or via a cloud service, and you’re in an SRE type role, then this is the one you want.

Minikube works on every platform and lets you configure lots of options. If you’re running Linux then you can turn off the VM so it runs natively.

The other cool thing is that it supports every Kubernetes version so you can exactly match the versions you’re running on your laptop to the version you’re running on your servers.

As an SRE type person I run Minikube locally and we also run this in CI build VM’s for unit testing at work.

Docker Desktop

This is the one to recommend your development teams use. Every developer will have Docker installed already and so enabling Kubernetes is as simple as checking a checkbox. Kubernetes then runs in the same VM on Windows and OSX as Docker which saves some resources.

Docker Desktop hides a lot of the cluster management complexity which is great if your goal is to simply write applications and run them. The other benefit is that when you run Kubernetes in Docker Desktop your applications will share the same image registry across Docker and Kubernetes.

There’s another compelling reason to use Docker Desktop. If you’re using Windows and want to use Windows containers this is the only option that supports that. Be warned though that this does not play nicely with alternative virtualisation. You’ll need to disable any VirtualBox and use only HyperV.

MicroK8s

This is by Canonical so as you’d expect it’s really tailored for Ubuntu people. Although, it supports any system that can use Snap packages.

There are some inherent benefits of using a Snap installed application related to sandboxing and clean uninstallation. MicroK8s tracks upstream Kubernetes and offers both stable and beta channels. It also doesn’t require any virtual machine, which is similar to running Minikube on Linux with vm-driver=none.

As MicroK8s only runs on Linux the audience is slightly limited. It’s also the least mature of all of the options and was only launched back in May 2018.

If you’re already using Snap packages then this may be a good option. I’d still probably go with Minikube or Docker Desktop depending on my role but it’s good that another option exists to compete.

MiniShift

What can I really say here? Many who read my blogs will have noticed I’m not a big fan of OpenShift. At work we use upstream Kubernetes. Cloud services are maturing to a point where I’d question whether learning anything else is a good career option.

This is all pretty academic though. Some people will be working for companies who have bought into OpenShift and therefore using Minishift locally is the best option. I think it would make sense to use Minishift regardless of your role if you’re on this platform already just in case there are any differences.

Summary

Many people have defaulted to recommending Minikube for running Kubernetes locally to everyone.

While this is certainly the best option for people in a DevOps SRE style role I think it’s better to suggest using Docker Desktop for developers. Developers don’t really care about operating a Kubernetes cluster.

Here’s the summary table that I promised.

Historical illustration

Well done Docker for creating something that’s actually good 🙂

For those stuck on OpenShift I’m sorry but at least you have a local option.

Personally my laptop runs OSX so I’ll never really get into MicroK8s in any meaningful way. However, I’d be really interested to hear about some of the benefits to using it over the other options. I know it was designed to be lightweight so I’d be interested if resource consumption is lower than Minikube.

Thanks for reading and let me know if I’ve got anything wrong.

Historical workbook values; blanks mean unknown, not No. Prices, versions, maturity labels and feature claims are not current recommendations.

Kubernetes Local / Sheet1 (historical)

Historical snapshot

Recovered comparison data. Versions, prices and availability describe the original research, not a current benchmark. Blank or damaged source values are marked unknown.

Choose columns
Visible columns
Kubernetes Local / Sheet1 (historical)
Feature / source labelKINDMinikubeDocker DesktopMicrok8sMinishiftK3s
CompanyKubernetes-SIGCNCFDockerCanonicalRedhatRancher
URLhttps://github.com/kubernetes-sigs/kindhttps://kubernetes.io/docs/setup/minikube/https://www.docker.com/products/docker-desktophttps://microk8s.io/https://www.okd.io/minishift/https://k3s.io/
Kubernetes Versions1.11+AnyHardcoded to DockerAnyHardcoded to OKDLatest stable
Supported OSmacOS, Linux, WindowsOSX, Linux, WindowsOSX, WindowsLinux (requires snap)OSX, Linux, WindowsLinux
Container TypeLinuxLinuxLinux (on OSX), Linux or Windows (on Windows)LinuxLinuxLinux
VMKubernetes-in-DockerNone, Virtualbox, VMWare fusion, KVM2, Hyperkit, xhyve, Hyper-VHyperkit, Hyper-VNoneVirtualbox, xhyve, KVM, Hyper-VNone
Addonshttps://kind.sigs.k8s.io/docs/user/quick-start/#configuring-your-kind-clusteraddon-manager, coredns, dashboard, default-storageclass, efk, freshpod, heapster, ingress, kube-dns, metrics-server, nvidia-driver-installer, nvidia-gpu-device-plugin, registry, registry-creds, storage-provisioner-dns, dashboard, storage, ingress, gpu, istio, registry, metrics-server, HAanyuid, admin-user, registry-route, htpasswd-identity-provider, xpaas, che, community addonscore-dns, traefik, helm-controller
UnknownKINDMinikubeDocker DesktopMicrok8sMinishiftK3s
Why?* kind supports multi-node (including HA) clusters * kind supports building Kubernetes release builds from source * support for make / bash / docker or bazel, in addition to pre-published builds. * kind is written in go, can be used as a library, has stable releases * kind supports Windows in addition to MacOS and Linux * kind is a CNCF certified conformant Kubernetes installerThe best solution for Kubernetes cluster operators (DevOps / SRE) who want to practice Kubernetes cluster admin tasks. Highly configurable Kubernetes options.The best solution for developers who want to build applications locally. The only solution on Windows that will run Windows containers. Runs in the same VM as Docker. Images share the same local registry.Clean installation that runs upstream Kubernetes as native services on Linux systems supporting snap. A good option if you are running Ubuntu on your laptop. Supports multi-node (including HA) clusters.The best solution for operators and developers that are using OpenShift in their company.There is a Docker compose available for running locally. It's extremely lightweight at 40mb for the image. Memory and CPU consumption are extremely low.
Why Not?UnknownSeparate VM on OSX and Windows. More complex that Docker Desktop for developers.Kubernetes is not as configurable as the other options. If you're an SRE use Minikube.Less mature than MiniKube. Only supports Linux.If you're running non-OpenShift Kubernetes in your company then go with another option.Unknown

10 rows

Sources & further reading

  1. kind quick start
  2. minikube start
  3. Docker Desktop Kubernetes provisioners
  4. Docker Desktop settings: Kubernetes unavailable in Windows container mode
  5. Minishift retirement and OpenShift 3.x scope
  6. CRC upstream and OpenShift 4.x scope
  7. Recovered historical source (Common Crawl index)
  8. Kubernetes Local: historical workbook

Spotted something that needs another look?

Help improve this page →