64bit Kubernetes Cluster on Raspberry Pi

In this manual I describe how to install and configure a 64bit Kubernetes Cluster on Raspberry Pi.

Why this tutorial?

Although the Raspberry Pi 3B+ has a 64bit ARM processor, the most linux distributions for Raspberry Pi 3B+ currently only work on a 32bit basis. This hardly leads to a lower performance, but limits the usability of software a little, because 32bit software can run on 64bit systems, but not vice versa, e.g. the Kubernetes Pod Network Add-On “Calico”.

Because I wanted to know if it is possible to run a 64bit Kubernetes Cluster on Raspberry Pi I decided to simply try it out.

Image preparation

First, a 64bit operating system is required for the Raspberry Pi. Since HypriotOS is a very good base for Docker on Raspberry Pi, and I also used it for my first Raspberry Pi Kubernetes Cluster, I searched for a 64bit variant of HypriotOS. I found this Github project by Dieter Reuter, which offers a HypriotOS image with 64bit support. For flashing this image to a MicroSD card I could use the original HypriotOS Flash Tool without any problems.

After the image was flashed, my Raspberry Pis started without any problems. Next I configured basic settings on all pis like user, timezone, hostname and updated all installed packages.

Kubernetes Setup

After the basic configuration was done, I followed the Kubernetes documentation for installing kubeadm, kubectl and the kubelet service. After everything was installed successfully, I set up the cluster with kubeadm. As Pod Network Plugin, I decided to give Calico a try. After downloading the Calico Manifest, some configuration (POD Network), I fed the configuration into the cluster with kubectl apply. After ~10 minutes of waiting and a temporary system load of > 20, everything was up and running. Not it’s time to join the other nodes into the cluster. After additional 5 minutes, kubectl get nodes reported all my Raspberry Pis to be up and running 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *