A common problem I have when I want to test a Kubernetes manifest, or try something new, is I either create some LXC machines, fire up cloud instances, or boot a VM then install Kubernetes. This, for me, becomes a time consuming ritual and with no one option providing a truly quick, cost effective, Kubernetes cluster.

Pros and Cons

In a follow up post I’ll be outlining the differences between GKE, AKS, EKS, CDK, CDK with LXD, kubeadm, minikube, microk8s, and others to help underscore where this project best fits in any given workflow. In the meantime, I wanted to share quickly how to get started so you can draw your own conclusions :)

I’ve also added a few common troubleshooting issues at the bottom of this post if you get stuck!

What is microk8s?

In short, microk8s is designed to be a fast and lightweight upstream Kubernetes install isolated from your host but not via a virtual machine. This isolation is achieved by packaging all the upstream binaries for Kubernetes, Docker.io, iptables, and CNI in a single snap package. The snap package is an application container — you can imagine this as a lighter weight version of a Docker container. It uses a lot of the same underlying technologies for isolation just without all the overhead of network isolation.

microk8s is Kubernetes, installed locally!

The end result is a package format that transcends any one distribution as snaps can be installed on most Linux operating systems while also leveraging features like atomic updates, rollbacks on upgrade failures, and an increased level of confinement of software from the users host.