Try Sailor Cloud - 25% off!

Claim Now
Back to all posts

kubeadm Cluster Setup: Step-by-Step Installation Guide

kubeadm Cluster Setup: Step-by-Step Installation Guide

Setting up a Kubernetes cluster with kubeadm is a CKA exam requirement. This guide walks you through the complete process.

Prerequisites

System Requirements

  • 2+ CPUs
  • 2GB+ RAM
  • Unique hostname, MAC, product_uuid
  • Swap disabled
  • Network connectivity

Prepare All Nodes

# Disable swap
sudo swapoff -a
sudo sed -i '/ swap / s/^/#/' /etc/fstab

# Load kernel modules
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF

sudo modprobe overlay
sudo modprobe br_netfilter

# Networking settings
cat <<EOF | sudo 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

sudo sysctl --system

Install Container Runtime (containerd)

# Install containerd
sudo apt-get update
sudo apt-get install -y containerd

# Configure containerd
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
sudo systemctl restart containerd

Install kubeadm, kubelet, kubectl

# Add Kubernetes repo
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl

curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg

echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list

# Install packages
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

Initialize Control Plane

# On control plane node
sudo kubeadm init --pod-network-cidr=10.244.0.0/16

# Set up kubeconfig
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

Install CNI (Calico)

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

Join Worker Nodes

# On worker nodes (use token from kubeadm init output)
sudo kubeadm join <control-plane-ip>:6443 --token <token> \
  --discovery-token-ca-cert-hash sha256:<hash>

Verify Cluster

kubectl get nodes
kubectl get pods -n kube-system

Common Issues

IssueSolution
Nodes NotReadyCheck CNI installation
kubelet failingCheck container runtime
API server downCheck certificates

Practice Cluster Setup

Cluster installation is tested in CKA exams. Practice at Sailor.sh.

Start Free Practice