Kubernetes 1.22 on Fedora 34 with kubeadm

Enable kubernetes repos

cat <<EOF > /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

Disable SELinux becasue ... lazy

sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

Enable Fedora cri-o module

dnf -y module enable cri-o:1.20
dnf install -y cri-o

Install kube stuff

dnf  install -y --disableexcludes=kubernetes kubelet kubeadm kubectl

Enable cri-o and kubelet on boot

systemctl enable cri-o && sudo systemctl enable kubelet

Set kubelet extra args

echo "KUBELET_EXTRA_ARGS=--cgroup-driver=systemd" | sudo tee /etc/sysconfig/kubelet

Enable required modules on boot

tee /etc/modules-load.d/crio-net.conf <<EOF
overlay
br_netfilter
EOF

Set sysctl options

tee /etc/sysctl.d/99-kubernetes-cri.conf <<EOF
net.bridge.bridge-nf-call-iptables  = 1
net.ipv4.ip_forward                 = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF

Set cgroup kernel arg

  • Edit /etc/default/grub and add the following parameter to GRUB_CMDLINE_LINUX
systemd.unified_cgroup_hierarchy=0

Update grub changes

  • If using BIOS
grub2-mkconfig -o /boot/grub2/grub.cfg
  • If using UEFI
grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg

If you have swap enabled, disable it.

touch /etc/systemd/zram-generator.conf 

Disable firewall because ... lazy

systemctl disable firewalld.service

Reboot

init 6

Run kubeadm

kubeadm init --pod-network-cidr=10.244.0.0/16 --cri-socket=/var/run/crio/crio.sock

Copy the kubeconfig to your home directory

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

Remove the taint from the master ( only ) node

kubectl taint nodes --all node-role.kubernetes.io/master-

Deploy Calico

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

Add Helm

curl https://get.helm.sh/helm-v3.7.0-linux-amd64.tar.gz | tar zxvf -
cp linux-amd64/helm /usr/local/bin/helm