Setting Up k3s in Under Ten Minutes
Luis Villamarin
Software engineer. More about me →
I needed a real Kubernetes cluster to run this site and my other side projects on — cert-manager, ArgoCD, network policies, the whole thing — but I didn't want to pay for a managed control plane or babysit etcd on a cheap VPS. Every "get started with Kubernetes" guide assumes a cloud provider is picking up the tab. I wanted the actual API surface, running on the cheapest box I could find, up in minutes, not hours.
Stock Kubernetes is heavy for that. A full control plane wants etcd, a container runtime, and enough system pods that you notice it in your RAM bill. Most of that weight is built for fleets of nodes across a company, not one box running a personal site. What I actually needed was the same API — same YAML, same kubectl, same ArgoCD compatibility — without the overhead built for a problem I don't have.
k3s is a single binary that strips Kubernetes down to what a small cluster actually needs — swaps etcd for embedded SQLite by default, bundles containerd, and drops the components aimed at massive fleets. Installing it is one command:
curl -sfL https://get.k3s.io | sh -
That's it. In under a minute you have a working control plane, kubectl already configured at /etc/rancher/k3s/k3s.yaml, and a node ready to schedule pods. Adding more nodes later is one more command with a join token k3s writes out for you on the first node.
The part that actually mattered to me: none of it is a smaller API. Everything I've built on top since — ArgoCD, cert-manager, NetworkPolicies, Sealed Secrets — works exactly like it would on a "real" managed cluster, because to Kubernetes' API server, it is one. The savings are entirely in what's running underneath, not in what you're allowed to do on top.
If you're running a handful of services on a single box and don't need to convince anyone this is "enterprise-grade," k3s gets you the actual thing, not a toy version of it, in the time it takes to read this post.