k0s - The Zero Friction Kubernetes
!GitHub release (latest by date) !GitHub release (latest SemVer including pre-releases) !GitHub commits since latest release (by date)
!k0s-logo-dark !k0s-logo-light
Overview
k0s is an open source, all-inclusive Kubernetes distribution, which is configured with all of the features needed to build a Kubernetes cluster and packaged as a single binary for ease of use. Due to its simple design, flexible deployment options and modest system requirements, k0s is well suited for
- Any cloud
- Bare metal
- Edge and IoT
k0s is distributed as a single binary with zero host OS dependencies besides the host OS kernel. It works with any Linux without additional software packages or configuration. Any security vulnerabilities or performance issues can be fixed directly in the k0s distribution that makes it extremely straightforward to keep the clusters up-to-date and secure.
Key Features
- Certified and 100% upstream Kubernetes
- Multiple installation methods: single-node, multi-node, airgap and Docker
- Automatic lifecycle management with k0sctl: upgrade, backup and restore
- Modest system requirements (1 vCPU, 1 GB RAM)
- Available as a single binary with no external runtime dependencies besides the kernel
- Flexible deployment options with control plane isolation as default
- Scalable from a single node to large, high-available clusters
- Supports custom Container Network Interface (CNI) plugins (Kube-Router is the default, Calico is offered as a preconfigured alternative)
- Supports custom Container Runtime Interface (CRI) plugins (containerd is the default)
- Supports all Kubernetes storage options with Container Storage Interface (CSI)
- Supports a variety of datastore backends: etcd (default for multi-node clusters), SQLite (default for single node clusters), MySQL, and PostgreSQL
- Supports x86-64, ARM64, ARMv7 and RISC-V
- Includes Konnectivity service, CoreDNS and Metrics Server
Getting Started
If you'd like to try k0s, please jump in to our:
- Quick Start Guide - Create a full Kubernetes cluster with a single node that includes both the controller and the worker.
- Install using k0sctl - Deploy and upgrade multi-node clusters with one command.
- NanoDemo - Watch a .gif recording on how to create a k0s instance.
- Run k0s in Docker - Run k0s controllers and workers in containers.
- For docs, tutorials, and other k0s resources, see docs main page.
Join the Community
- [k8s Slack] - Reach out for support and help from the k0s community.
- [GitHub Issues] - Submit your issues and feature requests via GitHub.
[k8s Slack]: https://kubernetes.slack.com/archives/C07VAPJUECS [GitHub Issues]: https://github.com/k0sproject/k0s/issues [Contributing Guide]: https://docs.k0sproject.io/stable/contributors/ [Code of Conduct]:https://docs.k0sproject.io/stable/contributors/CODE_OF_CONDUCT/
Community hours
We will be holding regular community hours. Everyone in the community is welcome to drop by and ask questions, talk about projects, and chat.
There's three calls scheduled:
- Community office hours - Eastern Hemisphere (EU TZ's)
- Community office hours - Western Hemisphere (US/Americas TZ's)
- Maintainers call - Open to everyone but intended for maintainers to sync up on plans and work
[project calendar]: https://zoom-lfx.platform.linuxfoundation.org/meetings/k0s?view=month
Adopters
k0s is used across diverse environments, from small-scale far-edge deployments to large data centers. Share your use case and add yourself to the list of [adopters].
[adopters]: ADOPTERS.md
Motivation
_We have seen a gap between the host OS and Kubernetes that runs on top of it: How to ensure they work together as they are upgraded independent from each other? Who is responsible for vulnerabilities or performance issues originating from the host OS that affect the K8S on top?_
→ k0s is fully self contained. It’s distributed as a single binary with no host OS deps besides the kernel. Any vulnerability or perf issues may be fixed in k0s Kubernetes.
_We have seen Kubernetes with cumbersome lifecycle management, high minimum system requirements, weird host OS and infra restrictions, and/or need to use different distros to meet different use cases._
→ k0s is designed to be lightweight at its core. It comes with a tool to automate cluster lifecycle management. It works on any host OS and infrastructure, and may be extended to work with any use cases such as edge, IoT, telco, public clouds, private data centers, and hybrid & hyper converged cloud applications without sacrificing the pure Kubernetes compliance or amazing developer experience.
Status
k0s is ready for production (starting from v1.21.0+k0s.0). Since the initial release of k0s back in November 2020, we have made numerous releases, improved stability, added new features, and most importantly, listened to our users and community in an effort to create the most modern Kubernetes product out there. The active development continues to make k0s even better.
Scope
While some Kubernetes distros package everything and the kitchen sink, k0s tries to minimize the amount of "add-ons" to bundle in. Instead, we aim to provide a robust and versatile "base" for running Kubernetes in various setups. Of course we will provide some ways to easily control and setup various "add-ons", but we will not bundle many of those into k0s itself. There are a couple of reasons why we think this is the correct way:
- Many of the addons such as ingresses, service meshes, storage etc. are VERY opinionated. We try to build this base with fewer opinions. :D
- Keeping up with the upstream releases with many external addons is very maintenance heavy. Shipping with old versions does not make much sense either.
Build
The requirements for building k0s from source are as follows:
- GNU Make (v3.81 or newer)
- A POSIX shell
- coreutils
- findutils
- Docker
The k0s binary can be built in different ways:
The "k0s" way, self-contained, all binaries compiled from source, statically linked, including embedded binaries:
make
The "package maintainer" way, without building and embedding the required binaries. This assumes necessary binaries are provided separately at runtime:
make EMBEDDED_BINS_BUILDMODE=none
Docker build integration is enabled by default. However, in environments without Docker, you can use the Go toolchain installed on the host system to build k0s without embedding binaries. Note that static linking is not possible with glibc-based toolchains:
make DOCKER='' EMBEDDED_BINS_BUILDMODE=none BUILD_GO_LDFLAGS_EXTRA=''
Note that the k0s build system does not currently support building the embedded binaries without Docker. However, the embedded binaries can be built independently using Docker:
make -C embedded-bins
Builds can be done in parallel:
make -j$(nproc)
Smoke test
Additionally to the requirements for building k0s, the smoke tests _do_ require
a local Go installation. you can run ./vars.sh go_version in a terminal to
find out the version that's being used to build k0s. It will print the
corresponding Go version to stdout.
To run a basic smoke test after build:
make check-basic