k3s-io/k3s
DevOps & Self-hostingA self-hostable, single-binary Kubernetes distribution for edge, IoT, CI and small clusters.
K3s packages a fully conformant Kubernetes distribution into a single binary under 100 MB, with a smaller memory footprint than upstream Kubernetes. It suits edge, IoT, CI, development, ARM and embedded scenarios, and environments where running a full cluster is impractical — the project's own framing includes situations where deep Kubernetes expertise is not available README.
What it is, and what changes in practice
K3s is a distribution, not a fork: it keeps upstream Kubernetes behavior and carries a small patch set (under 1000 lines per its README) while bundling the pieces needed for a working cluster README. A run installs and starts a server process, writes a kubeconfig to /etc/rancher/k3s/k3s.yaml, and leaves kubectl, crictl, an uninstall script and a kill-all script available. Worker nodes join by pointing at the server URL and a node token README. In a workflow sense, you go from a fresh Linux host to a working single-node cluster and then add agents, rather than assembling control plane, CNI, ingress and storage separately.
Two design choices matter most. First, most non-containerized components run inside one process, which is the main source of the reduced memory footprint; the binary is smaller partly because in-tree storage drivers and the in-tree cloud provider are removed, with CSI and external cloud-controller-manager as the supported replacements README. Second, sqlite3 is the default datastore, with etcd3, MariaDB, MySQL and Postgres supported through the Kine shim README. That default makes a single-node setup trivial but means storage choice is a real decision for multi-server clusters.
Included components and how to use it
The bundled stack covers containerd/runc, Flannel CNI, CoreDNS, Metrics Server, Traefik ingress, the Klipper service load balancer, kube-router network policy, a Helm controller, the local-path provisioner and host utilities. These can be disabled or swapped out README. That makes the first-run experience complete but also means the defaults are opinionated: if you want a different ingress or CNI, plan to disable the bundled option.
There are two documented install paths: the install.sh convenience script, which adds a systemd or openrc service, and a manual download of the release binary README. The manual binary is available for x86_64, armhf, arm64 and s390x README. Full installation, architecture and FAQ material lives on the docs site docs.
Requirements and limits
OS dependencies are described as minimal — a sane kernel and cgroup mounts — but K3s is still a Linux service deployment, not a general container runtime for any host. Versioning tracks upstream Kubernetes: v1.27.4+k3s1 maps to Kubernetes v1.27.4, with the +k3sN postfix allowing extra releases, targeted at patch releases within a week and new minors within 30 days README. The maintained conformance posture is documented through the CNCF conformance review process conformance link. Security issues are handled by email rather than public issues README. The README does not describe upgrade or rollback behavior for embedded etcd or datastore-backed clusters; consult the documentation for that before production use.
HotRepo's take
This is a mature, widely used project (created 2018, listed at 34,290 stars when sampled on 2026-10-31, +10 that day) repository. The single daily-board observation is not enough to say anything about trend, and popularity is not a judgement of fit. The useful question is whether the opinionated defaults fit: they are a strong match for edge and small self-hosted clusters, and a choice to revisit when you need specific storage or cloud integrations.
Written by AI from the project's README, updated October 31, 2026. The project's own docs are the source of truth.