Bootstrapping Kubernetes clusters on Raspberry Pi using kubeadm.
You may also take a look at the Talos installation: k8s-bootstrap-talos.
This Kubernetes installation has been verified on Ubuntu 24.04 running on both Raspberry Pi 4 and 5.
Execute the provided script on all nodes (both control plane and worker nodes) prior to starting the installation process:
sudo bash prepare-node.sh
Once completed, reboot the node and proceed with the installation.
Setup the controlplane by running:
sudo bash controlplane.sh
Copy the generated configuration config/kubeadm-join.yaml
to each worker node and run this command to join the cluster:
sudo bash worker.sh
Run this on the controlplane for bootstrapping the infrastructure:
export GITHUB_USER=mmontes11
export GITHUB_REPO=k8s-infrastructure
export GITHUB_BRANCH=main
export GITHUB_PATH=clusters/homelab
export GITHUB_TOKEN=<your-personal-access-token>
./bootstrap.sh
In order to label nodes, run the following script in the controlplane:
./label-nodes.sh
admin
and super-admin
kubeconfigs are available in the following controlplane paths:
/etc/kubernetes/admin.conf
/etc/kubernetes/super-admin.conf
This article depicts the differences between them.