Skip to content

Instantly share code, notes, and snippets.

@jacksonps4
Created October 23, 2024 06:29
Show Gist options
  • Save jacksonps4/c51f93d429a253c6b6091ae7b3ad7642 to your computer and use it in GitHub Desktop.
Save jacksonps4/c51f93d429a253c6b6091ae7b3ad7642 to your computer and use it in GitHub Desktop.
Kubernetes on Raspberry Pi 2024
# INSTALL KUBERNETES ON RASPBERRY PI HARDWARE
# PROCEDURE
From a clean install of Raspberry Pi OS: this was Oct 2024 version:
```
# Configure Raspberry Pi
# Add cgroup_enable=cpuset cgroup_enable=memory cgroup_memory=1 to end of below
# file:
vi /boot/firmware/cmdline.txt
# Disable swap
swapoff -a
dphys-swapfile swapoff
dphys-swapfile uninstall
update-rc.d dphys-swapfile remove
apt purge dphys-swapfile
# Add Docker APT repos
echo "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian" $(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Download public keys
mkdir /etc/apt/keyrings
# For Docker
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# And Google Cloud / Kubernetes
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
# Install packages
apt-get update
apt-get install containerd.io
apt-get install kubeadm kubectl kubernetes-cni kubelet
apt-get install -y open-iscsi
# Configure networking for Kubernetes
cat << --EOF-- | sudo tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
--EOF--
cat << --EOF-- | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward=1
--EOF--
sysctl --system
# Configure containerd
containerd config default > /etc/containerd/config.toml
# Check that systemd is being used for containerd
# In section: [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
# ensure SystemdCgroup = true
vi /etc/containerd/config.toml
systemctl daemon-reload
systemctl restart containerd
# Check for errors
systemctl status containerd
modprobe br_netfilter
# Initialise control plane: note CIDR range is defined for Calico
kubeadm init --pod-network-cidr=<pod-network-cidr> --apiserver-cert-extra-sans <extra-sans>
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment