# k0s — Zero Friction Kubernetes Distribution > Mirantis' single-binary Kubernetes distro with etcd, containerd, and CNI baked in. From a Raspberry Pi edge cluster to FIPS-validated production HA. ## Install Save in your project root: # k0s — Zero-Friction Kubernetes Distribution ## Quick Use ```bash # install on the first control-plane node curl -sSLf https://get.k0s.sh | sudo sh sudo k0s install controller --single sudo k0s start # grab a kubeconfig sudo k0s kubeconfig admin > ~/.kube/k0s.conf KUBECONFIG=~/.kube/k0s.conf kubectl get nodes # or use k0sctl for multi-node clusters k0sctl init --k0s > k0sctl.yaml # edit hosts in k0sctl.yaml k0sctl apply --config k0sctl.yaml ``` ## Introduction k0s is an open-source Kubernetes distribution from Mirantis packaged as a single, statically linked binary (≈ 200 MB) with zero host-OS dependencies. It includes everything you need — kubelet, kube-proxy, containerd, etcd, and CNI — baked into one process, which makes it easy to deploy on anything from a Raspberry Pi to an air-gapped edge server. ## What k0s Does - Ships Kubernetes, etcd, containerd, and a CNI as one signed binary - Runs as a systemd service or in a container with `k0s docker` - Supports single-node, HA (etcd or kine + SQL), and edge topologies - Uses `k0sctl` to declaratively manage clusters over SSH — no Ansible needed - Stable upgrade path: download the new binary, restart the service ## Architecture Overview Inside the single binary k0s embeds the upstream Kubernetes components but swaps in its own supervisor that restarts any child process on failure. The control plane can store state in etcd, kine (SQLite/MySQL/Postgres), or an external etcd cluster, while worker nodes talk to the API server over a built-in Konnectivity tunnel — so private worker nodes can join without opening inbound ports. ## Self-Hosting & Configuration - `k0s config create` scaffolds a YAML manifest with sensible defaults - Pick CNI (kube-router default, Calico supported) in the config - `k0sctl apply` deploys and upgrades clusters over SSH — idempotent, safe to re-run - Air-gapped bundles: `k0s airgap list-images` plus registry mirror settings - Control-plane isolation: workloads never schedule to controllers unless you ask ## Key Features - Smallest viable production Kubernetes — no package manager dance - ARM64 / armv7 first-class — ideal for fleet edge - Konnectivity built in: worker-to-controller NAT traversal out of the box - Kine mode lets you use SQLite/MySQL/Postgres instead of etcd for small clusters - FIPS-validated builds available for regulated environments ## Comparison with Similar Tools - **k3s** — Rancher/SUSE equivalent; different opinions on embedded components - **MicroK8s** — Canonical's snap-based distro; tight Ubuntu integration - **kubeadm** — official bootstrap tool; much more assembly required - **RKE2** — Rancher's FIPS-ready distro; heavier than k0s - **Talos Linux** — OS + k8s; k0s stays on a standard Linux host ## FAQ **Q: Single-node or HA?** A: Both. `install controller --single` for a dev box; `k0sctl` for multi-control-plane HA. **Q: Can I run it offline?** A: Yes. Export the air-gap bundle and configure a registry mirror in the k0s manifest. **Q: What about Windows workers?** A: Supported via the k0s worker installer; control planes remain Linux. **Q: How do upgrades work?** A: Use `k0sctl apply` with a new version; it does rolling upgrades with configurable concurrency. ## Sources - https://github.com/k0sproject/k0s - https://docs.k0sproject.io/ --- Source: https://tokrepo.com/en/workflows/c7ca6bf7-3900-11f1-9bc6-00163e2b0d79 Author: AI Open Source