Find your next open-source project

Search by name, purpose, or keyword — or paste a GitHub repository URL

k0sproject/k0s

DevOps & Self-hosting

A single-binary Kubernetes distribution for bare metal, edge, IoT, and cloud clusters.

6,587
541
Go
NOASSERTION
6 years old

Overview

k0s is an open-source, CNCF-certified Kubernetes distribution packaged as one binary that has no host OS dependencies beyond the kernel. It is meant for bare metal, edge and IoT, and cloud deployments where a full but lightweight cluster is needed without adding packages to the host . It includes the controller, worker, and supporting components in the same distribution, and is designed for a clean upstream Kubernetes base with few bundled add-ons.

Key capabilities include single-node and multi-node installation, an air-gap path, running controllers and workers in Docker, lifecycle management with k0sctl, and a choice of datastores (etcd, SQLite, MySQL, PostgreSQL) . Defaults include Kube-Router for CNI and containerd for CRI, while Calico and custom plugins are supported .

Quick Start

For a first cluster, the quick-start guide creates one node that acts as both controller and worker, so you can watch the node come online and use kubectl against it. The supported path is the official quick-start guide: Quick Start Guide. If you want a multi-node cluster that can be upgraded later, use the k0sctl instructions: Install using k0sctl. Docker-based runs are documented separately .

To build k0s from source, the build needs GNU Make, a POSIX shell, coreutils, findutils, and Docker. The standard build compiles and embeds all binaries inside containers and does not require Go on the host:

make

For a package-maintainer build without embedded binaries, use:

make EMBEDDED_BINS_BUILDMODE=none

After building, a basic smoke test requires a local Go installation; check the Go version with ./vars.sh go_version, then run:

make check-basic

Operational Constraints

The README lists a minimum of 1 vCPU and 1 GB RAM, which should be checked against the detailed system requirements before sizing a cluster . The distribution targets Linux; architecture support covers x86-64, ARM64, ARMv7, and RISC-V . It is intentionally a minimal base: add-ons such as ingress controllers, service meshes, and storage are not bundled, so cluster operators choose and maintain them separately . Backups, upgrades, and multi-node lifecycle operations are handled through k0sctl .

HotRepo's take

k0s appears in the GitHub Go daily list with 6,580 stars and 541 forks, gaining 7 stars in the recorded day and reaching 12th position on that list. It also drew attention in a 2020 Hacker News thread with 126 points and 73 comments; one commenter highlighted the presence of an Alpine Linux maintainer among the contributors, while another questioned how much value a simplified Kubernetes wrapper adds when the user must still run the core components . The project's stated motivation is to remove host-OS and Kubernetes coupling and to make lifecycle management a first-class concern, which is a more concrete differentiator than a bare star count .

Written by AI from the project's README, updated . The project's own docs are the source of truth.

Hacker News

K0s – Zero Friction Kubernetes
▲ 126 · 73 comments · November 16, 2020
K0s – The Zero Friction Kubernetes
▲ 19 · 2 comments · July 21, 2026
K0s – Zero Friction Kubernetes
▲ 3 · 0 comments · November 12, 2020

You might also like

  1. k3s-io/k3sA self-hostable, single-binary Kubernetes distribution for edge, IoT, CI and small clusters.Go34,290
  2. dsx-ai-factory/nvkeA management plane for platform teams to build and run managed Kubernetes clusters on their own NVIDIA GPU bare-metal infrastructure.Go73
  3. siderolabs/talosAn immutable, API-managed Linux distribution purpose-built for running production Kubernetes clusters.Go11,467
  4. kubernetes/kubernetesA container orchestration system for platform teams who need to schedule, scale and operate containerized workloads across many hosts.Go128,606
  5. helm/helmPackage, version and release Kubernetes applications as charts so the same app can be installed reproducibly on many clusters.Go30,367