Okay, so I wanted to build a super small Kubernetes cluster, you know, just for testing and learning. I’d heard about Kelsey Hightower’s “Kubernetes The Hard Way,” but honestly, it felt a bit too hard for what I needed. So, I decided to make my own, even smaller version – I called it “small kelsey”.

First, I grabbed three virtual machines. I could have used my local machine with something like VirtualBox, but I went with a cloud provider ’cause it felt cleaner. Didn’t need anything fancy, just the basic, cheapest ones they had.
Then, I installed the bare minimum operating system. Just a plain, no-frills Linux distro. I prefer something lightweight for this kind of thing.
Getting the Tools Ready
Next up, I downloaded the Kubernetes binaries. You know, `kube-apiserver`, `kube-controller-manager`, `kube-scheduler`, `kubelet`, and `kube-proxy`. I just grabbed the latest stable release and unpacked them on each machine. Make sure the downloaded binaries version are the same.
Setting up the Control Plane
-
I picked one machine to be the master node. Then i manually configured the `kube-apiserver`, making sure to set the correct IP addresses and ports.
-
Next, I started messing with the `kube-controller-manager` and `kube-scheduler`. Again, just basic configuration, pointing them to the API server.
Setting up the Worker nodes
-
On the other two machines (the workers), I configured the `kubelet`. This involved telling it how to talk to the API server on the master node.
-
I also set up `kube-proxy` on each worker. This handles the networking magic that Kubernetes does.
After a bit of config file wrangling and restarting services, I ran `kubectl get nodes`. And bam! There they were, my three nodes, all ready and reporting for duty. It wasn’t pretty, and it definitely wasn’t production-ready, but it was my tiny Kubernetes cluster.
I deployed a simple “Hello, World” app just to make sure everything was working. And it did! It felt pretty awesome to see my little app running on this super minimal cluster I’d built from scratch.

It was a great learning experience. By building everything manually, I got a much better understanding of how all the Kubernetes pieces fit together. Definitely recommend trying it if you’re curious about the inner workings of Kubernetes!