k0s — Yet Another Kubernetes Distro !!

Image for post
Image for post

Yes, you heard it right, yesterday Mirantis launched k0s a frictionless kubernetes distribution.
k0s is a single binary that is packed with all the components to run the Kubernetes cluster in very little time by just having the binary on all the hosts.

Now by this time you already must have started making comparisons of k0s with k3s which is a CNCF sandbox project & a CNCF certified kubernetes distribution. But first let us see what k0s has to offer, its vision, a demo, and then a comparison with k3s.

What is behind the name?
- Zero friction meaning anyone can install without any kubernetes expertise.
- Zero OS dependencies
- Zero cost as its open-source
- Zero Downtime as it comes with automated cluster lifecycle management


- It is a single binary(around 165 mb) with no OS dependencies
- [FIPS security compliance](https://www.sdxcentral.com/security/definitions/what-does-mean-fips-compliant/) = k0s kubernetes core components + OS dependencies + components packaged on top
- Isolated Control Plane - the server will not have a container engine or kubelet running by default, meaning no workload can run on the server.
- Custom worker profiles
- Future native cluster backup/restore and other features

Note - Components included in binary will be explained in the comparison with k3s section


Image for post
Image for post

k0s uses Rancher's [Kine](https://github.com/rancher/kine/) to allow a wide variety of backend data stores to be used such as MySQL, PostgreSQL, SQLite, and dqlite.
k0s uses Konnectivity by default that is responsible for the control plane and worker bidirectional communication.

Other Notable points -

- From the commits k0s was previously called MKE (Mirantis kubernetes/container engine I suppose )
- It is claimed to be a successor of Pharos Project.
- k0s can be run as docker as well.
- k0s allows extending the functionality of kubernetes cluster by using extensions -> atm only helm CRD’s can be used.

Demo - For this demo, we will take 2 CentOs plain Virtual machines and create a Kubernetes cluster using k0s

Installing the binary
Download the k0s binary on both the nodes:

Run the server on the node(the machine where you want the Control plane to be) with default config

you can see all the control plane components running as processes

Create the token for worker

On the worker node run the join command with the token just generated

you can see the k0s processes on the worker node as well:

From the control plane, you can see the status of the worker node (after installing kubectl as it is not packaged within the binary)

Now we have a Kubernetes cluster up and running with the Kubernetes version v1.19.3

Comparison with k3s:

Image for post
Image for post

Note: k0s does not run on Arch Linux(thanks to Alex Ellis for pointing this)
Though there are a few features in k0s that makes it different from k3s but they have a lot in common as well. IMO it would have been great if there were contributions made to k3s instead of creating a new distribution itself.

Let me know your thoughts on it in comments or on reddit.

Saiyam Pathak
Director of Technical evangelism, Civo
CNCF Ambassador

Written by

l CNCF Ambassador | CKA | CKAD | Influx ACE | Multi-cloud certified | Rancher Ranch Hands member

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store