Bootstrap Kubernetes clusters on Raspberry Pi using kubeadm.
The workload cluster is bootstrapped by Flux using the k8s-infrastructure repository.
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 node-prepare.sh
Once completed, reboot the node and proceed with the installation.
Setup the control-plane by running:
sudo bash control-plane.sh
Copy the kubeadm configuration files config/kubeadm-join.<node-type>.yaml
to each node and run this command to join the cluster:
sudo bash node.sh 'config/kubeadm-join.<node-type>.yaml'
Run this on the control-plane 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
Generate the Kubernetes configuration files from the Talos control-plane and copy them to the target node:
TALOS_CONTROLPLANE=<host> \
TARGET_NODE=<host> \
KUBELET_EXTRA_ARGS="--node-labels=node.mmontes.io/type=<type> --register-with-taints=node.mmontes.io/type=<type>:NoSchedule" \
./scripts/talos-config.sh
Run this command in the target node to join the cluster:
sudo \
SKIP_KUBEADM_JOIN="true" \
bash node.sh
admin
and super-admin
kubeconfigs are available in the following control-plane paths:
/etc/kubernetes/admin.conf
/etc/kubernetes/super-admin.conf
This article depicts the differences between them.
- k8s-management: Cluster API based installation.
- k8s-bootstrap-talos: Talos based installation.