Rancher Labs has announced a new open source project, k3s, which is a lightweight Kubernetes distribution that has been optimised towards running within resource-constrained environments, such as edge or IoT locations, or within telco and manufacturing systems.
Darren Shepherd, co-founder and chief architect at Rancher Labs, stated in the k3s launch blog post that then new orchestration framework was created for running at the (network) edge, for example on ARM chips and IoT platforms, and for use within continuous integration systems where there is a requirement to minimise the speed of cluster initialisation and tear down. The name "k3s" is a play on the popular shortening of the word Kubernetes to "k8s", and the k3s GitHub repository states that the project is "5 less than k8s".
The work for k3s started as a component of Rio, an experimental Rancher Labs' "user oriented end-to-end container solution" that began last year. Although Rio is only available in early preview, an outline of the features and tooling is provided in the project's GitHub repo, and this currently includes a container runtime, orchestration, networking, a service mesh, monitoring and several other components. Shepherd states that the Rancher Labs team started "seeing real demand for Kubernetes on the edge and a growing interest in k3s itself, so we decided to pull [k3s] out of Rio and make it a first-class open source project."
k3s is packaged as a single binary that is approximately 40 MB in size, and the project website states that the orchestrator requires only 512 MB of RAM to execute. The single binary includes "everything needed to run Kubernetes, including a container runtime and any important host utilities like iptables, socat, and du".
k3s bundles the core Kubernetes components -- kube-apiserver, kube-controller-manager, kube-scheduler, kubelet, kube-proxy -- into combined processes that are presented as "a simple server and agent model". Running k3s will start the Kubernetes server and automatically register the local host as an agent. This will create a one node Kubernetes cluster, and other nodes can easily be added via the CLI.
The default k3s package also runs the container runtime containerd, networking overlay implementation Flannel, DNS support via CoreDNS, the Traefik ingress controller, and a simple host port based service load balancer. Shepherd states that all of these components are optional and "can be swapped out for your implementation of choice". The inclusion of these components enables an operator to deploy a "fully functional and CNCF conformant cluster so you can start running apps right away".
Several commenters on Hacker News were initially skeptical of the creation of another Kubernetes distribution, as they believed this could lead to differing features and fragmentation within the Kubernetes ecosystem. However, several replies (including one from Dan Kohn, executive director of the CNCF) and a follow up Rancher Labs blog post confirmed that k3s is a certified Kubernetes distribution, which means that all Kubernetes workloads should be portable across this and other certified distributions.
It's obviously not the first project to attempt to put Kubernetes on small devices, but k3s is the first one to be designed for production environments and is fully certified by the CNCF.
k3s is available for x86_64, ARMv7 and ARM64 at https://k3s.io today. Ben Hall and Sebastiaan van Steenis have created Katacoda tutorials for operators looking to experiment with the orchestrator without installing anything locally.