
Choosing Software
Before I even seriously started thinking how to install Kubernetes at home, I already knew that I wanted to use Kubespray. This short post is just to explain how I made that decision and why I think Kubespray is a good start.
If you search internet for how to set up a full featured Kubernetes cluster at home, almost immediately you find two products: Talos Linux and Kubespray. In most cases, people will pick between these two if they are seriously setting up something.
Talos Linux
I really liked Talos Linux. It's clean, elegant, secure, and has a beautifully designed architecture. But I quickly realized it wasn't a good match for my needs. The core philosophy of Talos Linux is that the only thing running on your machines should be Kubernetes. You can't even SSH into it; installing or running other software simply isn't allowed. That's perfectly fine if your goal is solely to operate Kubernetes and Kubernetes-native applications. However, in my situation, I also want to run additional tools like WireGuard, maybe a Tailscale relay node, and other software that doesn't fit neatly into Kubernetes.
So I want to have a normal operating system that can run Kubernetes and also something else. That's why Talos OS, even if it's beautiful and secure and well made, is not a good match for me.
Kubespray
Kubespray appealed to me because it's an official Kubernetes project, has over 15,000 stars on GitHub, and has been around for many years. The killer feature, though, is its simplicity and flexibility: give it any popular Linux distribution with SSH access and a sudo-without-password user, and it will bootstrap Kubernetes for one node or a hundred using Ansible. Because Kubespray itself uses Ansible, I can reuse the same approach to automate other node tasks if I decide to.