Skip to content

Instantly share code, notes, and snippets.

@bachmanity1
Last active February 24, 2026 06:29
Show Gist options
  • Select an option

  • Save bachmanity1/d87e290340d9a1009c4208e8e5cbed18 to your computer and use it in GitHub Desktop.

Select an option

Save bachmanity1/d87e290340d9a1009c4208e8e5cbed18 to your computer and use it in GitHub Desktop.
Install Kubernetes v1.32 worker node
#!/bin/bash
set -e
MASTER=false
for arg in "$@"; do
if [[ "$arg" == "--master" ]]; then
MASTER=true
break
fi
done
echo "[0/8] Prepare bash"
echo 'export PATH=$PATH:/usr/sbin' >> /home1/irteamsu/.bashrc
echo 'export PATH=$PATH:/usr/local/bin' >> /home1/irteamsu/.bashrc
echo 'alias k=kubectl' >> /home1/irteamsu/.bashrc
echo 'complete -F __start_kubectl k' >> /home1/irteamsu/.bashrc
echo 'source <(kubectl completion bash)' >> /home1/irteamsu/.bashrc
echo 'source <(kubeadm completion bash)' >> /home1/irteamsu/.bashrc
echo "[1/8] Disabling swap"
swapoff -a
sed -i '/swap/d' /etc/fstab
echo "[2/8] Loading kernel modules"
cat <<EOF | tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
modprobe overlay
modprobe br_netfilter
echo "[3/8] Setting sysctl params"
cat <<EOF | tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
sysctl --system
echo "[4/8] Installing containerd"
dnf install -y yum-utils device-mapper-persistent-data lvm2
dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
dnf install -y containerd.io
mkdir -p /etc/containerd
containerd config default > /etc/containerd/config.toml
sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
systemctl enable --now containerd
echo "[5/8] Adding Kubernetes repo"
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.31/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.31/rpm/repodata/repomd.xml.key
EOF
echo "[6/8] Installing kubelet, kubeadm, kubectl"
dnf install -y kubelet kubeadm kubectl
systemctl enable --now kubelet
echo "[7/8] Setting SELinux to permissive (if not already disabled)"
if selinuxenabled; then
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
else
echo "SELinux is already disabled β€” skipping"
fi
if [ "$MASTER" = true ]; then
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
mkdir -p /home1/irteamsu/.kube
sudo cp -f /etc/kubernetes/admin.conf /home1/irteamsu/.kube/config
sudo chown irteamsu:irteamsu /home1/irteamsu/.kube/config
export KUBECONFIG=/home1/irteamsu/.kube/config
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
echo "[8/8] βœ… Master node initialized!"
kubeadm token create --print-join-command
else
echo ""
echo "[8/8] βœ… Kubernetes worker node is ready."
echo "πŸ‘‰ Once the master is initialized, join it using the token from the master node:"
echo " kubeadm join <master-ip>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>"
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment