Ansible automation in progress: https://github.com/aliyacodes/ansible-raspberry-pi-cluster
NOTE: This repo contains pieces of code that make up my Raspberry Pi Homelab, but they are not yet ready to be treated as one cohesive project. Files currently work independently of one another. Run line by line for now.
-
4x Raspberry Pis (You do not need entire kit or 8GB. 4GB is ideal. Cluster cases usually come with fans and heat sinks.)
CanaKit Raspberry Pi 4 8GB Starter Kit - 8GB RAM -
4x SD Cards (SD cards come with the Cannakit along with SD card adapter/reader, but can be purchased separately.)
SAMSUNG 32GB Evo Plus Class 10 Micro SDHC with Adapter - Pack of 5 -
1x Unmanaged Switch (PoE Switch is ideal but more expensive. If using PoE switch, can omit power hub and USB cables)
*May need additionnal PoE Hat for Raspberry Pi
NETGEAR 5-Port Gigabit Ethernet Unmanaged Switch (GS305) -
4x Ethernet Cables
Cat 6 Ethernet Cable, [6-Pack 1-ft] -
4x USB 2.0 to USB-C Cables
USB Type C Cable, [5-Pack 6-Inch] USB 2.0 to USB C -
1x USB Power Hub (Wall charger ok for small workload, make sure power to each port is sufficient)
USB Wall Charger, Anker 60W 6 Port USB Charging Station -
1x Cluster Case (Not necessary, but gets confusing and very messy without)
iUniker Raspberry Pi 4 Cluster Case
Operating system: Ubuntu Server 20.04.2 LTS for Raspberry Pi
There are multiple ways to download your image and flash your SD card. After downloading and flashing multiple times, I ended up using the link above to download my image.
Regular Ubuntu Server 20.04.2 LTS is just fine. Not quite sure of the difference between the Raspberry Pi specific image and this one, might be arm64 vs amd64 architechture. This becomes significant when adding certain repos, such as with Kubernetes.
I then used balenaEtcher to flash my SD card using the MicroSD Reader that came with my Canakit.
An alternative is Raspberry Pi's Imager. You can either use your own downloaded image, or use an image provided by the application.
git config --global user.name < username >
git config --global user.email < email >
git config --global credential.helper osxkeychain (Mac)
- Test automation of docker-k8s-install
- Ansible
- Add pictures and code to document instructions
- Instructions pre script
- Figure out dynamic DNS and proxy servers
- Build complete docker image with volumes
💁♀️ Markdown Guide