Last active
October 2, 2024 22:05
-
-
Save Anupal/38b7d88501b2b954db0cc339510d4a3f to your computer and use it in GitHub Desktop.
Setup Kubernetes cluster on Centos9/RHEL9
This file contains hidden or 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
#!/bin/bash | |
# sytem changes related for overlay networking | |
# add kernel modules | |
modprobe br_netfilter | |
modprobe ip_vs | |
modprobe ip_vs_rr | |
modprobe ip_vs_wrr | |
modprobe ip_vs_sh | |
modprobe overlay | |
cat << EOF | tee /etc/modules-load.d/k8s-modules.conf | |
br_netfilter | |
ip_vs | |
ip_vs_rr | |
ip_vs_wrr | |
ip_vs_sh | |
overlay | |
EOF | |
# enable iptables for v4 & v6, ip forwarding | |
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 --system | |
# disable swap | |
swapoff -a | |
# install containerd | |
dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo | |
dnf makecache | |
dnf -y install containerd.io | |
# enable systemdcgroup for containerd | |
mkdir -p /etc/containerd | |
containerd config default | tee /etc/containerd/config.toml | |
sed -i "s/SystemdCgroup = false/SystemdCgroup = true/g" /etc/containerd/config.toml | |
systemctl enable containerd && systemctl restart containerd | |
# add k8s related repos | |
cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo | |
[kubernetes] | |
name=Kubernetes | |
baseurl=https://pkgs.k8s.io/core:/stable:/v1.29/rpm/ | |
enabled=1 | |
gpgcheck=1 | |
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.29/rpm/repodata/repomd.xml.key | |
exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni | |
EOF | |
# install k8s packages | |
dnf makecache; dnf install -y kubelet kubeadm kubectl --disableexcludes=kubernetes | |
# add socat | |
dnf install socat | |
systemctl enable --now kubelet.service | |
# pull relevant kubeadm images | |
kubeadm config images pull | |
# setup cluster | |
kubeadm init --pod-network-cidr 192.168.0.0/16 | |
# copy config for kubectl | |
mkdir -p $HOME/.kube | |
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config | |
chown $(id -u):$(id -g) $HOME/.kube/config | |
# setup calico CNI | |
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml | |
# get joining token for adding workers | |
# kubeadm token create --print-join-command |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment