Kubernetes Platform for Robots
See more details at https://pagure.io/arm-image-installer.
sudo dnf install arm-image-installersudo fedora-arm-image-installer \
--image=$HOME/Downloads/Fedora-Server-33-1.3.aarch64.raw.xz
--media=/dev/sdc \
--target=rpi4 \
--resizefs \
--addkey $HOME/.ssh/id_ed25519.pubUpdate hostname
echo pi4 > /etc/hostname
rebootDisable Swap
dnf remove zram-generator-defaults
rebootDisable cgroups v2
grubby --update-kernel=ALL --args="systemd.unified_cgroup_hierarchy=0"
rebootInstall wpa_supplicant to enable WiFi networking
dnf install wpa_supplicant
reboot
nmcli general status
nmcli device wifi connect <ssid> password <password>Update system
dnf update
rebootSee more details at https://cri-o.io/.
dnf module enable cri-o:1.20
dnf install cri-o
systemctl enable crio
systemctl start crioSee more details at https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/.
Letting iptables see bridged traffic
cat <<EOF | tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
cat <<EOF | 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 --systemInstalling kubeadm, kubelet and kubectl
cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
exclude=kubelet kubeadm kubectl
EOF
# Set SELinux in permissive mode (effectively disabling it)
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
systemctl enable --now kubeletConfigure and start the deployment
cat <<EOF | tee /root/kubeadm-init.yaml
---
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
kubernetesVersion: v1.20.0
...
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
cgroupDriver: systemd
...
EOF
kubeadm init --config=kubeadm-init.yamlVerify installation
export KUBECONFIG=/etc/kubernetes/admin.conf
kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-74ff55c5b-rxqrt 1/1 Running 0 107s
kube-system coredns-74ff55c5b-vnh7s 1/1 Running 0 107s
kube-system etcd-pi4 1/1 Running 0 98s
kube-system kube-apiserver-pi4 1/1 Running 0 98s
kube-system kube-controller-manager-pi4 1/1 Running 0 98s
kube-system kube-proxy-5pddb 1/1 Running 0 107s
kube-system kube-scheduler-pi4 1/1 Running 0 97s