I run about eight services at home. A DNS resolver, a reverse proxy, some bits of media tooling, a wiki, the usual homelab furniture. None of it needs to survive a node failure. None of it serves anyone but me and the people under my roof. So naturally I spent two weekends standing up a three-node Kubernetes cluster to run it, and I'm here to report that this was, mostly, a mistake.
Kubernetes in early 2017 is not the polished thing it's becoming. kubeadm is still alpha, so I bootstrapped by hand with kubelet, the API server, etcd, and a flannel overlay, which is a fine way to learn exactly how the pieces fit and a terrible way to spend an evening when you just wanted the wiki back. The networking alone ate a Saturday. The overlay decided not to route between two nodes for reasons that turned out to be a firewall rule I'd forgotten on the host, which is the homelab in miniature: the platform was fine, I was the bug.
Here's the honest accounting. The control plane uses more of my modest hardware than several of the services it's orchestrating. When a node reboots, etcd has opinions about quorum that a single docker-compose file would never have bothered me with. And the abstractions that earn their keep at fifty nodes, declarative everything, self-healing, rolling updates, are mostly solving problems I don't have when the entire fleet fits on a shelf and I'm the only operator.
So why am I keeping it? Two reasons, and they're enough. First, it's the best lab I own. The thing I run at work is Kubernetes, and there is no substitute for breaking it at home, where the blast radius is my own evening and not a customer's afternoon. Every weird failure here is one I won't be meeting cold in production. Second, once it's actually up, the day-to-day is genuinely nice. A new service is a YAML file and a kubectl apply. Ingress, TLS via the proxy, restarts on crash, all handled. The pain is entirely front-loaded into standing it up, and the ongoing cost is low.
Would I recommend it for a home of eight services? No. Docker Compose on a single box would serve every one of my actual needs with a fraction of the moving parts, and if uptime were the goal rather than education, that's what I'd run. But "mostly a mistake" isn't the same as "a mistake". I didn't build this to host a wiki. I built it to have somewhere to be wrong about Kubernetes that doesn't page anyone. On that measure it's been worth every wasted Saturday.