Let me be clear about the conclusion before I justify the spend: this was a waste of time, and I would do it again tomorrow. I built a four-node Raspberry Pi 4 cluster. It does nothing that my existing single homelab box doesn't do faster, more reliably, and with a fraction of the cabling. It taught me nothing I could put on a CV. It was tremendous fun.
I think there's a particular kind of project, and most engineers have one, where the entire value is in the doing. You are not solving a problem. You are not even pretending very hard to solve a problem. You just want to hold the thing in your hands and make it work, and the moment it works the project is essentially over, because the point was never the result.
the bill of materials, such as it was
Four Pi 4s, the 4GB model, because 8GB felt like an admission that I expected to run something real on them. A stack of those clear acrylic cluster cases that arrive as a confusing flat-pack of laser-cut sheets and tiny brass standoffs. Four of the little 30mm fans that come with the case and sound, collectively, like a swarm of irritated wasps. A cheap five-port gigabit switch. And, because I am apparently incapable of buying short Ethernet cables in the right length, a tangle of patch leads that immediately became the worst part of the whole build.
4x Raspberry Pi 4 (4GB)
4x 32GB A1-rated microSD
1x acrylic 4-layer cluster case + standoffs
4x 30mm 5V fan (regrettable)
1x 5-port gigabit switch
1x 60W USB-C multiport supply
nx Ethernet cables, all the wrong length
The soldering, before you ask, was not strictly necessary. The fans came with bare leads and a choice of pulling 5V off the GPIO header or wiring them to the supply directly, and I chose to make a little splitter harness because I wanted an excuse to get the iron out. That is the kind of project this was. I added work so I could enjoy it.
flashing four cards is three cards too many
The unglamorous reality of any multi-node Pi build is that you spend the first evening flashing SD cards and waiting. The Raspberry Pi Imager makes a single card pleasant. Making four cards, each with a different hostname and the same SSH key preloaded, is just the same pleasant operation four times, which is to say tedious. I set static IPs on the switch side, named the nodes after the four cardinal directions because I have no imagination, and got SSH-without-password working before I let myself touch anything else. Past me has learned that the boring foundations save the fun later.
For the actual cluster software I went with k3s rather than full Kubernetes, which on a Pi is not so much a preference as a requirement. Full kubeadm on a 4GB ARM board is an exercise in watching the OOM killer do its job. k3s is Rancher's stripped-down distribution, a single binary, sqlite instead of etcd by default, and it installs with a one-liner that genuinely just works:
# on the first node
curl -sfL https://get.k3s.io | sh -
# grab the token, then on each worker
curl -sfL https://get.k3s.io | \
K3S_URL=https://north:6443 \
K3S_TOKEN=<token> sh -
Twenty minutes later I had kubectl get nodes showing four Ready boxes, and I sat there grinning at a terminal like I'd done something clever, when in fact Rancher had done all the clever bits and I'd just typed.
what it actually runs
Nothing. That's the honest answer. I deployed an nginx pod that serves a single HTML page reading "it works", which it does, on a Pi cluster that draws about 20 watts to do a job a £5 hosting account does better. I deployed a couple of pointless services purely to watch them get scheduled across nodes, drained a node to see the pods migrate, and pulled a power lead out mid-deploy to confirm the cluster shrugged it off. It did. That five seconds of watching a pod reschedule onto a surviving node was, genuinely, the high point.
There is a version of this post where I tell you I learned a great deal about distributed systems, leader election, and the CAP theorem made tactile. I didn't, really. I already knew that stuff in theory, and four Pis in an acrylic sandwich didn't make it truer. What the cluster gave me was the difference between reading that a control plane survives a node loss and yanking the cable yourself and seeing the green stay green.
was it worth it
By any sensible measure, no. The whole stack cost more than a year of cloud compute that would run rings around it, the fans are unbearable so it lives in a cupboard, and I have not deployed a single useful workload to it since the weekend I built it. It sits there, blinking, drawing its 20 watts, doing nothing.
But I spent a Saturday with a soldering iron and a pile of flat-pack acrylic and a problem I'd invented purely so I could solve it, and I finished it tired and happy. Not every project needs to teach you something or earn its keep. Some of them are just for the pleasure of making a small pile of silicon do what you told it to. I'd recommend building one. Buy the right length cables, though. Learn from my tangle.