Running Kubernetes locally on Linux with Microk8s
This article, the second in a series about local deployment options on Linux, and covers
While Minikube usually spins up a local virtual machine (VM) for the Kubernetes cluster, MicroK8s doesn’t require a VM. It uses
This difference has its pros and cons. Here we’ll discuss a few of the interesting differences, and comparing the benefits of a VM based approach with the benefits of a non-VM approach. One of the first factors is cross-platform portability. While a Minikube VM is portable across operating systems - it supports not only Linux, but Windows, macOS, and even FreeBSD - Microk8s requires Linux, and only on those distributions
Another factor to consider is resource consumption. While a VM appliance gives you greater portability, it does mean you’ll consume more resources to run the VM, primarily because the VM ships a complete operating system, and runs on top of a hypervisor. You’ll consume more disk space when the VM is dormant. You’ll consume more RAM and CPU while it is running. Since Microk8s doesn’t require spinning up a virtual machine you’ll have more resources to run your workloads and other applications. Given its smaller footprint, MicroK8s is ideal for IoT devices - you can even use it on a Raspberry Pi device! Finally, the projects appear to follow a different release cadence and strategy. MicroK8s, and snaps in general provide
But wait, there’s more! Minikube and MicroK8s both started as single-node clusters. Essentially, they allow you to create a Kubernetes cluster with a single worker node. That is about to change - there’s an early alpha release of MicroK8s that includes clustering. With this capability, you can create Kubernetes clusters with as many worker nodes as you wish. This is effectively an un-opinionated option for creating a cluster - the developer must create the network connectivity between the nodes, as well as integrate with other infrastructure that may be required, like an external load-balancer. In summary, MicroK8s offers a quick and easy way to turn a handful of computers or VMs into a multi-node Kubernetes cluster. We’ll write more about this kind of architecture in a future article. This is not an official guide to MicroK8s. You may find detailed information on running and using MicroK8s on it's official
A Linux distribution that
MicroK8s installation is straightforward: The command above installs a local single-node Kubernetes cluster in seconds. Once the command execution is finished, your Kubernetes cluster is up and running. You may verify the MicroK8s status with the following command: Using MicroK8s is as straightforward as installing it. MicroK8s itself includes a While using the prefix This will allow you to simply use One of the biggest benefits of using Microk8s is the fact that it also supports various add-ons and extensions. What is even more important is they are shipped out of the box, the user just has to enable them. The full list of extensions can be checked by running the As of the time of writing this article, the following add-ons are supported: More add-ons are being created and contributed by the community all the time, it definitely helps to check often! In this tutorial we’ll use NGINX as a sample application (). It will be installed as a Kubernetes deployment: To verify the installation, let’s run the following: Also, we can retrieve the full output of all available objects within our Kubernetes cluster: Uninstalling your microk8s cluster is so easy as uninstalling the snap:Disclaimer
Prerequisites
MicroK8s installation
sudo snap install microk8s --classic
sudo microk8s.status
Using microk8s
kubectl
binary, which can be accessed by running the microk8s.kubectl
command. As an example:microk8s.kubectl get nodes
microk8s.kubectl
allows for a parallel install of another system-wide kubectl without impact, you can easily get rid of it by using the snap alias
command:sudo snap alias microk8s.kubectl kubectl
kubectl
after. You can revert this change using the snap unalias
command.kubectl get nodes
MicroK8s addons
microk8s.status
command:sudo microk8s.status
Release channels
sudo snap info microk8s
Installing the sample application
kubectl create deployment nginx --image=nginx
kubectl get deployments
kubectl get pods
kubectl get all --all-namespaces
Uninstalling MicroK8s
sudo snap remove microk8s
Screencast