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.
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.
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.
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.
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.
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.
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.
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.
Tell us about a new Kubernetes application
Never miss a thing! Sign up for our newsletter to stay updated.
Discover and learn about everything Kubernetes