This time, I decided to do something else. One of the perks of the new role is to be involved in incubation projects so I decided to build a “tight as possible”, highly available, multi-master Kubernetes cluster on top of Raspberry Pi.
Couple of disclaimers before I dive in:
- This is definitely not a production-grade architecture and implementation so don’t be crazy using it for, well, production.
- The companies which their products I will be showing in this post, did not talk to me, paid me or asked me to write a review. This is based on my own analysis and needs.
Basically, I wanted to build a portable K8s setup which I can use when testing some internal projects while leveraging ARM architecture.
It is no secret that IoT and Edge computing are hot topics these days, although Edge is a very broad concept which IMO it doesn’t end with small Raspberry Pi computer or some sensors, it is more than that and can even be a full-blown vSphere cluster. As always, It all depends on the business requirements.
Yes, I am aware of the K3s project from Rancher. I am following that project but to be honest I haven’t formalized a solid opinion on it. In the next posts, I believe I will be writing about it a bit more.
I did (and still doing) a lot of research on this topic, both from the hardware and software side. There some great posts and projects out there which I want to point out.
- Serverless Kubernetes home-lab with your Raspberry Pis
- OpenFaaS on Kubernetes on Raspberry-Pi
- Docker & Kubernetes on Raspberry Pi 3
- Make your very own Kubernetes cluster from Raspberry PI
- Setup Kubernetes on a Raspberry Pi Cluster easily the official way!
- Setting up a Kubernetes 1.11 Raspberry Pi Cluster using kubeadm
- Build Your Own Cloud with Kubernetes and Some Raspberry Pi
- How to Build a Kubernetes Cluster with ARM Raspberry Pi then run .NET Core on OpenFaas
I wanted to build an architecture which you can just take, provide some electrical juice to and start playing. I did have a few key requirements for the hardware which I’m going to use.
- I worked under the assumption that a single K8s master node is a no-go.
- This had to be as plug-and-play as possible, meaning, I wanted easy access for how power gets connected.
- If one Pi gets malfunctioned, I needed a way to easily replace it.
- The network stack had to be compact but also managed by software. I wanted to have granular control for some more advanced use cases that might come in the future.
- I didn’t want to deal with the “not enough power” situation.
- I like things to stay cool.
- It had to be pretty as much as possible. Functionality and portability come first but if I can make it look nice why not?!
In the next post, I will be focusing more on the hardware I selected for this project. I am still working on the software side of the house and hopefully, I will feel comfortable releasing follow-up posts soon enough.
Stay tuned for this 🙂