Skip to content

Installing Kubernates Cluster on Ubuntu 26.04

Install pre-requisites

sudo apt update
sudo apt upgrade -y
sudo apt-get install -y apt-transport-https ca-certificates curl gpg

Setup Hostname

Set hostnames of master and worker nodes

sudo hostnamectl set-hostname master
sudo hostnamectl set-hostname node1

Update hosts files

sudo vim /etc/hosts
192.168.1.100  master
192.168.1.101  node1

Disable swap

sudo swapoff -a 
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

Load Kernel Modules

sudo modprobe overlay
sudo modprobe br_netfilter

Make these modules load persistently

sudo vim /etc/modules-load.d/k8s.conf
overlay
br_netfilter

Adding kernel parameters

sudo vim /etc/sysctl.d/kubernates.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
sudo sysctl --system

Install Containerd

Adding Docker official GPG keys to install containerd

# Add Docker's official GPG key:
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF

sudo apt update

Install containerd

sudo apt -y install containerd.io

Generate containerd config and save it a file

containerd config default | sudo tee /etc/containerd/config.toml

Updating file to make systemdCgroup to true

sudo sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml

Installing Kubernates

Adding GPG keys for Kubernetes repository

curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.36/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.36/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list

sudo apt update

Installing Packages

sudo apt install -y kubeadm kubectl kubelet

Initialize Kubernetes (On Master nodes only)

sudo kubeadm init \
--control-plane-endpoint=192.168.1.100 \
--node-name master \
--pod-network-cidr=10.244.0.0/16
  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml

Generate Cluster Joining Command

kubeadm token create --print-join-command

Join node to cluster (Run only on worker nodes)

sudo kubeadm \
    join 10.1.183.221:6443 \
    --token fcyg2k.457zfzxdix9jok75 \
    --discovery-token-ca-cert-hash sha256:543b0c80d35ab151cbcdb721b0d0bd63a990eeef6e6dd5dff7b6e2ea75341e23