Skip to content

Instantly share code, notes, and snippets.

@greyhoundforty
Created April 17, 2025 18:09
Show Gist options
  • Save greyhoundforty/be359a3e9e00bfe2a50aa1c66bd7fb77 to your computer and use it in GitHub Desktop.
Save greyhoundforty/be359a3e9e00bfe2a50aa1c66bd7fb77 to your computer and use it in GitHub Desktop.
RHEL 9 Kubernetes worker install script
#!/usr/bin/env bash
# Log all output
exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1
echo "Starting worker node installation..."
# Update package manager and add dependencies
dnf makecache
dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
dnf install -y yum-utils device-mapper-persistent-data lvm2
# Install containerd
dnf install -y container-selinux containerd.io
# Configure 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
# Enable and start containerd
systemctl enable --now containerd
# Configure Kubernetes repo
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.32/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.32/rpm/repodata/repomd.xml.key
exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni
EOF
# Set SELinux to permissive mode
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
# Install Kubernetes components
dnf install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
# Enable kubelet
systemctl enable --now kubelet
echo "Worker node setup complete!"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment