Kubernetes 1.18 on Fedora 32 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 module enable cri-o:1.18
dnf install cri-o

Install kube stuff

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

Enable cri-o and kubelet on boot

sudo 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

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

Set sysctl options

sudo 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.

sudo swapoff `cat /proc/swaps|grep dev|awk '{print $1}'`
sudo sed -e '/swap/ s/^#*/#/' -i /etc/fstab

Reboot

init 6

Run kubeadm

sudo 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

Credit:

https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/

https://jebpages.com/2019/02/25/installing-kubeadm-on-fedora-coreos/