A cluster of Raspberry Pis is deployed using Ansible and Kubernetes.
This is a project I always wanted to do, and that's when I came a cross the project made by Jeff Geerling the guy is a legend, he is very active in the community and has a project called Raspberry Pi Dramble.
Based entirely on this Raspberry Pi Dramble project, I created my Brazilian version Raspberry Pi Geexar I forked Jeff's project, removed some things and made it lighter just leaving that you would need for a Kubernetes cluster.
Well that is it if you are interested and want more details doesn't hesitate to open an Issuer or a Pull Request 😉
You can browse more information about geerlingguy's Dramble on http://www.pidramble.com. This site is running on the Raspberry Pi Dramble of Jeff cluster!
- 16+ ARMv7 CPU Cores
- 5.6 GHz combined compute power
- 4 GB RAM
- 128 GB microSD flash-based storage
- 1 Gbps private network with PoE
A basic list of components used in constructing:
The process for setting up all the Raspberry Pis is outlined in the Wiki:
- Prepare the Raspberry Pis for provisioning
- Rack the Raspberry Pis
- Network the Raspberry Pis
- Test the Ansible configuration
- Provision the Raspberry Pis
- Deploy Drupal to the Raspberry Pis
You can add more than four nodes, if you desire; add additional hosts in the same sequence in the following files:
setup/networking/inventory
setup/networking/vars.yml
inventory
If you need to change the IP subnet (default is 10.0.0.x
), make sure to also update hosts.j2
to use the new subnet so hostnames resolve correctly.
A Vagrantfile is also included for local testing and debugging of the Kubernetes cluster and manifests using Vagrant. See the Vagrant README for more details.
Set up Pis networking by assigning a uniform set of IP addresses and hostnames based on Pi MAC addresses. See the Networking README for more details.
https://kubernetes.io/blog/2019/07/18/api-deprecations-in-1-16/
kubectl proxy
kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')