Preface

Every organization I’ve worked for since 2017 has used Kubernetes. Granted, back in 2017, it was still a very new technology that didn’t benefit from the open-source ecosystem that it now does, and things were more challenging to do with it in general.

My professional experience with Kubernetes began with reading documentation and trying things locally or in AWS EKS. Local environments like Kind and k3s were new but suffered from severe resource limitations. Despite the improvement in laptop specs over the years, trying to do meaningful local development work, testing, or learning remains a significant challenge due to the complexity of said environments and the cost of managed options like EKS, GKE, and AKS.

These challenges, coupled with the scope of my day-to-day work being more Kubernetes centric made my desire for a decent local Kubernetes cluster that wouldn’t cause me to declare bankruptcy or melt my laptop.

The Raspberry Pi

I’ve been using Raspberry Pis for several years for various hobbies and personal projects, so it made sense to use one of these, especially with the release of microk8s.

Microk8s allowed me to quickly run a cluster and toggle several services off and on as needed. However, the resource limitations of the pi3 and, eventually, pi4 were a significant hurdle. Due to resource strain, building out a cluster with meaningful things like Prometheus, Thanos, Grafana, and Istio was a struggle. Additionally, many core services, like Prometheus, didn’t have arm-based containers available at the time, further limiting my options.

Enter the ODROID

I needed something with an x86 architecture and a non-trivial amount of RAM, and a friend mentioned the ODROID H2+. It’s a nifty little SBC with a tiny physical footprint, an Intel chip with four cores, and up to 32GB RAM.

This was a definite step up from the Pi. I could use microk8s without kubectl commands taking forever to execute due to resources maxing out. I could also deploy those services that didn’t have an arm-based container available.

I had enough RAM, but it wasn’t long before I started taxing the four core Intel processor. This was when I was learning about Prometheus in-depth, recording rules and capturing metrics of “busy” components like Istio. Running certain queries was hitting the upper limits of the processor in this context.

The search continued for a solution where I had a cluster of machines like this ODROID.

A Note About ODROID

If you’re in the market for something more powerful than a Pi with many great features, I can’t recommend ODROID boards enough. My H2+, purchased in late 2020, is still running strong, and I recently used it to go through the Linux From Scratch project and plan to use it for their BLFS and ALFS projects.

I should also make it clear that I’m not in any way incentivized to say the above. I’m just a fan of their products.

The Turing Pi

Around mid to late 2020, I started seeing blogs and articles about people clustering Raspberry Pis together for various reasons, including as Kubernetes clusters. I happened across this blog post by Jeff Geerling about the Turing Pi and thought it could be the solution I was looking for.

However, by the time I discovered they were a thing, it was next to impossible to get one, much less populate it with Raspberry Pi Compute Modules. Now, in mid-2024, the availability of compute modules and other SBC options is once again reaching pre-pandemic levels.

Because of these shortages, there was nothing to do but wait. So that’s what I did, and in early 2022, the Turing Pi 2 was announced, and with it, a Kickstarter campaign. I was lucky enough to quickly get one of the early bird pricing pledges. It took almost a year from my pledge until it landed on my doorstep, and in that time, I still hadn’t been able to source Raspberry Pi Compute Modules. The Turing RK1 modules hadn’t been released yet, and no release date was set because of the ongoing chip shortages.

The board sat in its box, unused for about six months, while I searched for CM4 modules that weren’t being scalped. I used that time to pick up some needed hardware to go along with it: a power supply, a mini-ITX case, and an SSD I could use for cluster storage because NVMe drives are still insanely expensive.

Eventually, with no sign that the chip shortage was going to end anytime soon, I cracked when I was able to find four CM4 modules on eBay. Yes, I overpaid, but I finally had something as close as possible to an actual Kubernetes cluster with 16 cores and 32GB of memory. I was able to stand up all of the OSS services I used in my org and accelerate my learning in an environment where if I made a critical mistake, I wasn’t taking down prod or wasting company dollars while I spent time trying to fix it.

In Q2 of 2023, it was announced that the Turing RK1 boards were available for preorder, and I jumped at the opportunity because a home k8s lab with 32 cores and 128GB memory? Yes, please. It wasn’t cheap of course but I’d had the foresight to set money aside in anticipation of their release.

By the time they arrived, nearly a year after ordering them, the firmware for the Turing Pi had been updated to make the process of updating the firmware easy to do through the UI but it did require a complete reinstall.