This year (2021) I’ve been building and experimenting with Kubernetes on a cluster of Raspberry Pis. This is an index to a series of posts about things that I’ve done and learned in the process.

My cluster on March 6. It hasn’t taken over the house — yet!

Future topics include a few things that I’ve done and more that I hope to do:

  • Building a first app
  • Building a “real” app: a gRPC service backed by a PostgreSQL database with a Flutter frontend
  • PostgreSQL on Kubernetes
  • Running repeated tasks on Kubernetes with CronJobs

For the first post in this series, see Part 1: the Hardware.

While this wasn’t the first thing that I did with my cluster, it was the first thing that I wanted to do, and now having reset and reinstalled everything a few times, it’s become the first thing that I do when I start a fresh cluster.

I’m going to describe setting up the dashboard to serve on a domain using TLS. This has security risks, so think carefully before you do this, and while you might be comfortable with this for your home lab, please don’t do this…

For the first post in this series, see Part 1: the Hardware.

Kubernetes is not famous for simplicity, so when I discovered that Canonical published a curated configuration of Kubernetes that I could install as a single package, microk8s became my system of choice for running my cluster.

I found the installation instructions clear, including some specific configuration required for Raspberry Pi.

I’m using the 1.21/stable channel, so I installed microk8s on each node with:

sudo snap install microk8s --channel=1.21/stable --classic

Next I picked one node to initially configure and went through the next two steps in the docs (“join…

For the first post in this series, see Part 1: the Hardware.

The Nodes and Network

Setting up my nodes and network was straightforward, but I’ll describe it here for completeness. The first thing that I had to do for each Pi was get it to boot and attach to my network, where I could then assign it an IP address.

I’m using Ubuntu Server 20.10 64-bit (arm64). This has a few disadvantages: There’s no raspbi-config, so it’s harder to configure WiFi and GPIO settings (which I don’t plan to use), and graphics support isn’t as good — when I tried installing Ubuntu Desktop…

Late last year I started thinking about building a Raspberry Pi cluster. For years I’d read about people running Kubernetes on Raspberry Pis and thought that the experience of building a Pi cluster would be a great learning exercise, but didn’t want to build a cluster to just run toy projects. But when the Pi 4 appeared, I felt that the time had come to try to build something useful (and fun).

The Hardware

Early this year I started gathering parts; first a couple of Pi 4 boards from Adafruit, and then after looking at lots of cluster racks I found a…

Using Go and PostgreSQL to analyze a year of streaming.

By now, Spotify users everywhere have gotten their 2019 Wrapped results. I wasn’t too surprised by mine, partly because I knew I’d spent a lot of time exercising to music by a soon-to-be-returning band from the 90s, but also because I’d recently used Spotify’s privacy data download to take a direct look at my history for the last year, which Spotify keeps in exhaustive detail.

Getting my play history from Spotify

It begins with a request at, where (down near the bottom), Spotify users can request a download that includes “a copy of your playlists, searches, streaming history for the past year, a list of…

Logos for the OpenAPI Initiative and the gRPC project.

Spend some time working with OpenAPI and gRPC and you’ll notice that these two technologies have a lot in common. Both are open source efforts, both describe APIs, and both promise better experiences for API producers and consumers. So why do we need both? If we do, what value does each provide? What can each project learn from the other?

We need to talk about APIs.

OpenAPI and gRPC are two approaches to building networked APIs. Quoting the Google API Design Guide, networked APIs are:

Application Programming Interfaces that operate across a network of computers. …

By Pablo RM from Madrid, Spain [CC BY 2.0 (], via Wikimedia Commons

A year ago, I found a job in one of the world’s biggest API companies. You probably know us for Search, Mail, Maps, or any of the dozens of apps that we have in the Android and iOS app stores. Those apps range all the way from delivering YouTube, one of the largest sources of worldwide internet traffic, to fun VR demonstrations about Abbey Road and The Bohemian Rhapsody. We have a lot of apps, and another thing that we do a lot is build data centers.

Tim Burks

Software developer in the SF Bay area. Electronic Design Automation, iOS apps, and now API tools for the world’s largest computer.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store