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
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
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
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