Last active
February 24, 2026 06:29
-
-
Save bachmanity1/d87e290340d9a1009c4208e8e5cbed18 to your computer and use it in GitHub Desktop.
Install Kubernetes v1.32 worker node
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 | |
| 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