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

TopicFull Kubernetesk3s
InstallMany components, tools like kubeadmOne binary, one script
DatastoreExternal etcd clusterSQLite by default, etcd optional
RuntimeYou choose and installcontainerd bundled
NetworkingPick a CNI yourselfFlannel bundled
IngressInstall separatelyTraefik bundled
Memory2 GB+ per node512 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

Example · bash
# The same kubectl commands work on both
kubectl get pods -A
kubectl apply -f deployment.yaml
kubectl get nodes -o wide

When 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.

Example · bash
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.

Example · bash
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.

Example · bash
kubectl get pods -n kube-system
# Notice: no cloud-controller-manager, no separate etcd pod

Discussion

  • Be the first to comment on this lesson.