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