Created
October 23, 2024 06:29
-
-
Save jacksonps4/c51f93d429a253c6b6091ae7b3ad7642 to your computer and use it in GitHub Desktop.
Kubernetes on Raspberry Pi 2024
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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