
MicroK8s
Canonical’s Kubernetes in one snap package: installs with one command on Linux, forms a highly available cluster by itself at three nodes, and adds features as addons.
- What it is
- Container orchestration
- Part of
- Kubernetes distribution
- Type
- Open source
- Made by
- Canonical
- License
- Apache 2.0 (bundled components keep their own licences, e.g. dqlite is LGPLv3 with a static-linking exception)
- Facts checked
- 6 October 2026
What it is
MicroK8s is upstream Kubernetes packaged as a snap, the self-contained, auto-updating package format from Ubuntu. snap install microk8s puts the Kubernetes services, containerd and a bundled microk8s kubectl on any Linux distribution that runs snapd. There is no VM and no node container: the services run directly on the host as systemd units, and since version 1.21 the API server, scheduler, controller manager, kubelet and kube-proxy run as subprocesses of a single kubelite daemon. Cluster state lives in dqlite, Canonical’s Raft-replicated version of SQLite, behind a drop-in replacement for etcd, and pods are networked by Calico (with the ha-cluster addon turned off, MicroK8s falls back to etcd and Flannel). Each snap channel, such as 1.36/stable, follows one Kubernetes minor version.
Canonical calls it “a low-ops, minimal production Kubernetes”, scalable “from a single node to a high-availability production cluster”. microk8s add-node prints a join command; once three or more nodes have joined, high availability switches on by itself, every node runs the control plane, and at least three of them vote on the replicated datastore. Everything beyond the core (DNS, storage, ingress, the GPU operator and dozens more) is an addon you enable or disable. The same snap is pitched at laptops, CI runners, Raspberry Pis and appliances; on macOS and Windows an installer runs it inside a Multipass Ubuntu VM. Unlike K3s, a single binary you copy onto any Linux host, MicroK8s depends on snapd, and it replicates state with dqlite rather than etcd. It is free, with paid support through Ubuntu Pro.
Why teams pick it
- One command installs conformant Kubernetes on many Linux distributions, and a snap channel pins the minor version while patch updates arrive automatically
- High availability forms by itself at three nodes, with no separate etcd cluster or load balancer to build
- Addons switch on common pieces such as DNS, hostpath storage, ingress or the GPU operator with one command
- Runs in as little as 540 MB of memory, and an optional strictly confined snap walls it off from the host with AppArmor, seccomp and namespaces
Watch out for
- Tied to snapd: native only on Linux with snaps; on macOS and Windows it runs in a Multipass VM that needs at least 4 GB of RAM and 40 GB of storage
- Follows upstream with a lag: in October 2026 the newest channel is 1.36 (May), while Kubernetes 1.37 shipped in August
- Its HA datastore is dqlite rather than the usual etcd; a lost quorum needs a manual recovery procedure, and electing a new leader after a crash takes up to 5 seconds
- Strict confinement blocks workloads that need shared mounts with the host (the Cilium, GPU and Multus addons need the classic snap), and addons come and go: 1.36 removed the dashboard
More of the Kubernetes family
What all container orchestration have in common →
RKE2Open sourceDistributionsSUSE’s security-focused Kubernetes distribution: one binary per node, hardened defaults, FIPS-validated crypto and close alignment with upstream.
Talos LinuxOpen sourceDistributionsA Linux distribution that only runs Kubernetes: immutable, minimal, with no shell or SSH, and managed entirely through an API.
Amazon EKSAWSManaged servicesAWS runs the Kubernetes control plane for you; you choose how much of the worker side to hand over too.
kindOpen sourceFor local developmentKubernetes IN Docker: each cluster node is a container, so a conformant multi-node cluster starts and disappears inside a CI job.
minikubeOpen sourceFor local developmentA local Kubernetes cluster for developers on Linux, macOS or Windows, in a container, a VM or on the host itself, with laptop-friendly extras.
AgonesOpen sourceBuilt on itRuns dedicated multiplayer game servers on Kubernetes: keeps a fleet of them warm, hands one to each match, and never kills a server while players are on it.
KlutchOpen sourceBuilt on itA young open-source control plane, built on Crossplane, that lets many application clusters order databases from one central Kubernetes cluster.How it fits with other technologies
Install from a channel, enable addons, then grow to a three-node HA cluster · bash
sudo snap install microk8s --classic --channel=1.36/stable
microk8s status --wait-ready
microk8s enable dns
microk8s enable hostpath-storage
microk8s kubectl create deployment web --image=nginx
# on the first node: prints a one-time join command
microk8s add-node
# on two more machines, run the printed command, e.g.
microk8s join 10.0.0.11:25000/<token>
microk8s status # reports whether HA is on, and the datastore voter nodesSee it in a real stack
No architecture uses MicroK8s yet. Drop it into the playground and wire it up yourself.Open playground →Where it came from2018–2026
Canonical launched MicroK8s on December 6, 2018 as “a fast and efficient upstream Kubernetes delivered as a single snap package that installs on 42 flavours of Linux”. It installed conformant Kubernetes 1.13, and its first add-ons included a container registry, storage and GPU enablement. The launch named its use cases: embedded, auto-updating Kubernetes for IoT, local CI/CD pipelines, disposable clusters inside production pipelines, single-node servers and machine-learning work with Kubeflow.
High availability arrived with MicroK8s 1.19 in August 2020: cluster at least three nodes and the datastore, dqlite, replicates itself with Raft, with no extra setup. Version 1.21 (April 2021) folded the separate Kubernetes services into one kubelite binary and brought major dqlite stability fixes.
Canonical now pitches the same package to developers, DevOps teams and software vendors who embed Kubernetes in appliances, and sells support for it through Ubuntu Pro.
Why it’s built this way
- Ship Kubernetes as a snap
- The launch post gave the reasons: automatic updates keep developers on the latest upstream release, and snaps have well-defined security capabilities. Channels let users stay on one minor version, and a strictly confined variant isolates it further.
- dqlite instead of etcd for HA
- Canonical wanted HA with almost no operations. Every node runs the control plane, and nodes take database roles (voter, standby, spare) automatically, so an administrator only adds or removes nodes and never runs a separate etcd cluster.
- A minimal core plus addons
- Installing only core Kubernetes keeps the footprint small for small devices; DNS, storage, ingress, GPUs and the rest are switched on only where needed.
Timeline
- 2018
Launched on December 6 as a snap with Kubernetes 1.13
- 2020
1.19 adds automatic high availability on dqlite (August)
- 2021
1.21 runs the Kubernetes services in one kubelite binary (April)
- 2026
1.36 in May drops the dashboard addon after its upstream deprecation
- Snapcraft blog: Canonical launches MicroK8s, deploy Kubernetes in seconds (Dec 2018)
- MicroK8s v1.19 release on GitHub: high availability (Aug 2020)
- MicroK8s v1.21 release on GitHub: kubelite (Apr 2021)
- MicroK8s v1.36 release on GitHub (May 2026)
- MicroK8s docs: High availability (node roles)
- k8s-dqlite README: drop-in etcd replacement, “almost zero ops”
- Canonical: MicroK8s product page (audiences, Ubuntu Pro)
Sources16 · facts checked 6 October 2026
- Canonical: MicroK8s product page (install, use cases, Ubuntu Pro support)
- MicroK8s docs: Home (“low-ops, minimal production Kubernetes”)
- MicroK8s docs: Get started (540 MB, channels, addons)
- MicroK8s docs: Configuring services (kubelite, k8s-dqlite, etcd, Calico and Flannel)
- MicroK8s docs: High availability
- MicroK8s docs: Clustering (add-node and join)
- MicroK8s docs: Addons
- MicroK8s docs: Strict confinement
- MicroK8s docs: Installing on macOS (Multipass)
- MicroK8s docs: Release notes (dqlite as default datastore)
- Snap Store: MicroK8s channels
- MicroK8s v1.36 release on GitHub (May 2026)
- Kubernetes Blog: Kubernetes v1.37 release (Aug 2026)
- dqlite README: distributed SQLite on Raft, licence
- k8s-dqlite README: Dqlite backend for Kubernetes
- MicroK8s repository licence (Apache 2.0)