I use a few selfhosted services in my Home and because I tend to break my Lab environment weekly these services are running on 2 Raspberry Pi’s and my NAS on the Home side of my Network. But I have, in the past few months, started using more services from my Lab in my Home and I would like to move these to a “Production” Kubernetes environment.
The aim here is to build a Small Scalable Raspberry Pi Cluster to Host my Dashboards, DNS, Monitoring and some other services in my Home network side.
Bill of Materials
2 X Raspberry Pi 4 8GB
2 X Raspberry Pi 4 2GB
8 Port USB Power supply
4 X 64Gb Kingston Canvas Select Plus microSD
I installed some small heatsinks on the Pi’s just to lower the temperature a little. They did not overheat but were running close to 80°C and I did not like that.
The cases and Cabling are all aesthetic and as long as the USB cables can supply the power and the Ethernet Cables are Cat 5e it should work.
The Unifi Flex mini was cheapish and sized just right for my initial build.
I opted to run 64bit Ubuntu 20.04 on the Pi’s. I am comfortable to use Ubuntu and this will also keep the OS the same as all the Servers in my Lab environment. For my Kubernetes Environment I will be using K3S for the ease of setup, I will also use MetalLB as my Load balancer. Storage will be NFS shares from my Synology NAS or local storage.
To Start with the Services I will be running on the cluster include
Central Grafana Instance for Dashboards
OpenSpeedtest for internal Performance Testing
Uptime Kuma for Network and Internet Monitoring
Linktree for Bookmark Management
I opted to put my Cluster in its own VLAN with Firewall rules allowing only traffic out to the Internet.
To allow UptimeKuma to monitor devices in my own network I allowed this traffic on a per Service/IP basis
There is also a rule to allow for my NFS storage to be accessible from the cluster.
The cluster has its own Class C network with Nodes in the range .10 to .19
MetalLB will be able to mange the .30 – .50 space for loadbalancer IP’s