I ran Kubernetes in my homelab. RKE2, Flux, GitOps, the whole thing — I even wrote about the setup here and here. It worked. I learned a lot.
Then I tore it all down and went back to plain Docker.
What I actually run
Let’s be honest about the scale first: three hosts at home and a VPS. Game servers, a monitoring stack, some self-hosted tools, backups. That’s it. No team, no hundred microservices, no traffic spikes that need autoscaling.
Kubernetes doesn’t care how small you are, it brings the same complexity either way. And at my scale, I was paying that complexity tax without collecting anything for it.
Where Kubernetes started to annoy me
The overhead never sleeps. etcd, control plane, kubelets, CNI — the cluster burns CPU and RAM just existing. On big iron nobody notices. On homelab hardware, it’s resources my actual services don’t get.
Everything has more layers. A container doesn’t start? In Docker
that’s docker logs and 30 seconds. In Kubernetes it’s pod events,
then the deployment, then maybe the PVC, then maybe the CNI. The
answer is always findable, but the path is longer and at home, I’m
the only one walking it.
Upgrades are a project. RKE2 made cluster upgrades about as
painless as they get, but “as painless as they get” still means
reading release notes, checking API deprecations, and planning an
evening. docker compose pull && docker compose up -d is not a
project.
The cluster itself became the hobby. At some point I noticed I was spending more time maintaining Kubernetes than building things on it. That’s fine if cluster operations is what you want to learn. It was, for a while. Then it wasn’t.
What I miss (honestly)
GitOps. Flux watching a repo and reconciling the cluster to it is genuinely great, and plain Docker has nothing that elegant built in.
But most of the value survives the migration: my compose files live in Git, deployment is a pull away, and the discipline of “the repo is the truth” stuck with me. I lost the automatic reconciliation, not the workflow.
Declarative everything, health checks, clean rollbacks — Kubernetes does all of it better. I just don’t do any of it often enough to keep a control plane running for it.
What three hosts and a VPS actually need
Docker Compose, one directory per stack, everything in