Kubernetes cluster using 16 Raspberry Pi 3B+ plus one as master. Trying to make it as seamless as possible while learning Ansible for automation.
End goal is to drive wife nuts with idiot project.
/ ! \ WORK IN PROGRESS, UNUSABLE STATE
Specs
- 64 cores (22.4Ghz combined)
- 1TB of total storage (each node is equipped with a 64GB uSD)
Pre-requis
- Money to throw out your window
- Time to waste
- Ansible installed (on Mac it's
brew install ansible)- If you have an error with permission blablabla, run:
sudo mkdir /usr/local/Frameworkssudo chown $(whoami):admin /usr/local/Frameworks- Rerun brew
- If you have an error with permission blablabla, run:
- All node have the latest Rapbian installed
- They have a static IP
- You have injected your own ssh keys
Basic usage:
- Clone the repo.
- By default, the repo/playbook assume that:
- Nodes have a fixed ip as
192.168.0.XXX- Master:
192.168.0.150 - Workers:
192.168.0.151 to 166
- Master:
- Nodes have a fixed ip as
- Edit the hosts files at
ansible/hostsif that's not the case - You private SSH keys is already in each node
- Go to
hexadeca/ansible - Run
ansible-playbook -i hosts 1-cluster-preparation.yml
It will update/upgrade Raspbian, install a bunch of basic stuff, put Docker and Kubeadm.
BOM
| Item | Quantity |
|---|---|
| Raspberry Pi 3 B+ | 17 |
| Sandisk microSD Ultra 64GB | 17 |
| Micro USB cable | 17 |
| Anker Powerport 10 ports 60w | 2 |
| D-Link switch 16 ports GO-SW-16G | 1 |
| Netgear switch 5 ports DGS-105 | 1 |
| Ethernet 50cm flat | 18 |
| Optional parts | |
| OLED 128x32 i2c | 16 |
| Alphacool radiator 14x14mm full copper (pack of 10) | 2 |
| Pimoroni Unicorn HAT | 1 |
| WAF | |
| Ikea Sammanhang | 2 |

