k3s vs Full Kubernetes
k3s trims and repackages upstream Kubernetes so it is far smaller and simpler to operate.
Standard Kubernetes (often called k8s or vanilla Kubernetes) is powerful but heavy: many separate processes, an external etcd database, and a complex install. k3s keeps the same API but changes the packaging.
Key differences
| Topic | Full Kubernetes | k3s |
|---|---|---|
| Install | Many components, tools like kubeadm | One binary, one script |
| Datastore | External etcd cluster | SQLite by default, etcd optional |
| Runtime | You choose and install | containerd bundled |
| Networking | Pick a CNI yourself | Flannel bundled |
| Ingress | Install separately | Traefik bundled |
| Memory | 2 GB+ per node | 512 MB is enough to start |
What did they remove? Mostly legacy in-tree cloud providers and alpha features that most users never touch. The result is smaller, but still fully conformant.
Example
# The same kubectl commands work on both
kubectl get pods -A
kubectl apply -f deployment.yaml
kubectl get nodes -o wideWhen to use it
- A team migrating from kubeadm evaluates k3s because it replaces etcd with SQLite, removing a major operational burden on small clusters.
- An SRE chooses k3s over full Kubernetes for a branch-office cluster because the 512 MB RAM requirement fits available hardware.
- A CI system uses k3s instead of kind/kubeadm because it starts a real single-node cluster in under 30 seconds.
More examples
Compare process count
Lists all k3s/kube processes sorted by memory to illustrate how few processes k3s runs versus a full cluster.
ps aux --sort=-%mem | grep -E 'k3s|kube' | awk '{print $1,$3,$4,$11}'View embedded SQLite datastore
Shows the default SQLite database k3s uses instead of an external etcd cluster.
ls -lh /var/lib/rancher/k3s/server/db/
sqlite3 /var/lib/rancher/k3s/server/db/state.db '.tables'List kube-system pods
Lists system pods so you can see which optional Kubernetes components k3s omits by default.
kubectl get pods -n kube-system
# Notice: no cloud-controller-manager, no separate etcd pod
Discussion