Video thumbnail for How Install Kubernetes on RHEL 10 with CRI-O | kubeadm Step-by-Step

How Install Kubernetes on RHEL 10 with CRI-O | kubeadm Step-by-Step

Feb 7, 2026

linuxtechi.com

In this tutorial, youโ€™ll learn how to install Kubernetes on RHEL 10 using CRI-O container runtime with one control plane node and one worker node. This step-by-step guide is beginner friendly, production-aligned, and perfect for: - Learning Kubernetes fundamentals - RHEL-based Kubernetes labs - DevOps & Cloud practice environments ๐Ÿ“Œ Setup Overview OS: RHEL 10 Kubernetes Version: v1.34 Container Runtime: CRI-O Cluster Type: 1 Control Plane + 1 Worker Node ๐Ÿ”ง Prerequisites - Two RHEL 10 systems (VM or Physical) - Root or sudo access - Active Red Hat subscription - Minimum: 2 vCPU, 2 GB RAM - Internet connectivity between nodes Step 1: Update System & Set Hostnames sudo dnf update -y sudo reboot Set hostnames sudo hostnamectl set-hostname k8s-control sudo hostnamectl set-hostname k8s-worker Update /etc/hosts sudo vi /etc/hosts 192.168.1.96 k8s-control 192.168.1.4 k8s-worker Step 2: Disable Swap (Mandatory) and SELinux sudo swapoff -a sudo sed -i '/ swap / s/^/#/' /etc/fstab Set SElinux to Permissive Mode sudo setenforce 0 sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config โš™ Step 3: Load Kernel Modules & Sysctl Settings sudo vi /etc/modules-load.d/k8s.conf overlay br_netfilter Save & close the file sudo modprobe overlay sudo modprobe br_netfilter Apply sysctl parameters sudo vi /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.ipv4.ip_forward = 1 save and exit the file sudo sysctl --system ๐Ÿ”ฅ Step 4: Configure Firewall Control Plane Node sudo firewall-cmd --permanent --add-port=6443/tcp sudo firewall-cmd --permanent --add-port=2379-2380/tcp sudo firewall-cmd --permanent --add-port=10250-10252/tcp sudo firewall-cmd --reload Worker Node sudo firewall-cmd --permanent --add-port=10250/tcp sudo firewall-cmd --permanent --add-port=30000-32767/tcp sudo firewall-cmd --reload ๐Ÿงฑ Step 5: Install CRI-O Container Runtime CRIO_VERSION=v1.34 sudo vi /etc/yum.repos.d/cri-o.repo [cri-o] name=CRI-O baseurl=https://download.opensuse.org/repositories/isv:/cri-o:/stable:/$CRIO_VERSION/rpm/ enabled=1 gpgcheck=0 gpgkey=https://download.opensuse.org/repositories/isv:/cri-o:/stable:/$CRIO_VERSION/rpm/repomd.xml.key sudo dnf install -y cri-o sudo systemctl enable --now crio sudo systemctl status crio ๐Ÿ“ฆ Step 6: Install Kubernetes Components KUBERNETES_VERSION=v1.34 sudo vi /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://pkgs.k8s.io/core:/stable:/$KUBERNETES_VERSION/rpm/ enabled=1 gpgcheck=1 gpgkey=https://pkgs.k8s.io/core:/stable:/$KUBERNETES_VERSION/rpm/repodata/repomd.xml.key exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni Install kubeadm, kubelet & kubectl sudo dnf install -y kubelet kubeadm kubectl --disableexcludes=kubernetes sudo systemctl enable --now kubelet ๐Ÿš€ Step 7: Initialize Control Plane sudo kubeadm init \ --pod-network-cidr=10.244.0.0/16 \ --cri-socket=unix:///var/run/crio/crio.sock Configure kubectl access mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config ๐ŸŒ Step 8: Install Flannel CNI kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml Verify: kubectl get pods -n kube-flannel ๐Ÿค Step 9: Join Worker Node sudo kubeadm join {control-ip:6443} --token {token} \ --discovery-token-ca-cert-hash sha256:{hash} Verify from control plane: kubectl get nodes ๐Ÿงช Step 10: Test Kubernetes Cluster kubectl create deployment nginx --image=nginx kubectl expose deployment nginx --type=NodePort --port=80 kubectl get svc Access app: http://[node-ip]:[node-port] You have successfully installed Kubernetes on RHEL 10 using CRI-O with a 1 Control + 1 Worker Node setup. ๐Ÿ‘ Like | ๐Ÿ”” Subscribe | ๐Ÿ“ข Share for more Linux, Kubernetes, DevOps & Cloud tutorials.

View Video Transcript
Software Science Computer Science