Self-Hosted Blog Part 2 - The Hardware
In part 1, we established this project with a requirement to run Kubernetes on bare metal. I considered a number of potential options:
- Get a beefy desktop and run Minikube on a single machine
- Run a hypervisor and spin up a series of VMs on a beefy machine
- Buy a small number of not-as-powerful machines, like Raspberry Pis
From a requirements perspective, all could easily meet the requirement of running kubernetes on-prem. But, from a fun perspective, I really wanted to have a real cluster of machines, and I didn’t want to spend a ton of money. The Raspberry Pi 4 Model B really fit the bill. From a specs perspective, it runs on ARM64 processor with a 1.5Ghz system on a chip, up to 8GB of RAM, and I can put in a reasonable amount of storage (128GB) easily on a micro-SD card. There’s an Ubuntu distribution for Raspberry Pi, so I can run a familiar distribution.
Here’s what ended up being my bill of materials to assemble my cluster. I spent a bunch of time looking for a case that would work well, how to power all the machines from a USB power supply, the right length cables, a cheap ethernet switch, and more. This list of items has been running for nearly a year and has been very reliable.
- 4 x Raspberry Pi 4 Model B
- 4 x SanDisk 128GB Ultra MicroSDXC
- 2 x USB C Cable Short [0.8ft 3 Pack]
- 1 x Anker PowerPort 10 (60W 10-Port USB Charging Hub)
- 1 x GeeekPi Raspberry Pi Cluster Case
- 4 x 1 Ft Cat 6 Cable
- 1 x TP-Link 5 Port Gigabit Unmanaged Ethernet Switch
All told, it was around $650. My Amazon list has all the items above added to it. As of this writing, looks like Raspberry Pi 4 Model B 8GB units are pretty hard to get.
Putting the hardware together was relatively straight forward. One thing notable about the assembly was I missed putting in the little circuit board the case comes with in order to extend the SD card slot around to the front. This is pretty important because you’ll likely need to replace SD cards or you’ll be pulling SD cards to work with them on another machine.
Fully assembled, I have 4 Raspberry Pis powered from one USB power supply and networked via a single 5 port ethernet switch. It’s relatively easy to move around and it’s cooled by the case. The fan is pretty quiet, but it moves a pretty good amount of air. This is what mine looked like fully assembled:
Yes, that is a goat in the background. We have a thing about goats at Cribl. With our hardware ordered and assembled, next let’s get k8s running.
Posts in this Series
- Self-Hosted Blog Part 1 - Overview
- Self-Hosted Blog Part 2 - The Hardware
- Self-Hosted Blog Part 3 - OS & Kubernetes
- Self-Hosted Blog Part 4 - The Blog
- Self-Hosted Blog Part 5 - Container
- Self-Hosted Blog Part 6 - Build
- Self-Hosted Blog Part 7 - Kubernetes
- Self-Hosted Blog Part 8 - Internet Accessibility
- Self-Hosted Blog Part 9 - Performance