How to Install Kubernetes Cluster (kubeadm Setup) on Ubuntu 22.04 (Step-by-Step Guide)

How to Install Kubernetes Cluster (kubeadm Setup) on Ubuntu 22.04 (Step-by-Step Guide)

Kubeadm Installation Guide

This guide outlines the steps needed to set up a Kubernetes cluster using kubeadm.

Pre-requisites

  • Ubuntu OS (Xenial or later)

  • sudo privileges

  • Internet access

  • t2.medium instance

if you reset your kubadm try below command

sudo rm -rf /var/lib/etcd
sudo kubeadm reset
sudo swapoff -a

If You want to uninstall previous kubeadm

sudo kubeadm reset
sudo apt-get purge kubeadm kubectl kubelet kubernetes-cni kube*   
sudo apt-get autoremove  
sudo rm -rf ~/.kube

After Instalation To start service automatically during the boot, you must enable it using:

systemctl enable kubelet

Fresh Setup, Kubeadm

sudo vi /etc/hosts

setup master and worker node: Both server or node setup this

192.168.1.118 master

192.168.1.119 worker-node

Both Master & Worker Node

Before instalation permanently disable swapoff from both node.

sudo vi /etc/fstab

Run the following commands on both the master and worker nodes to prepare them for kubeadm. Or Execute common.sh from the repository.

sudo swapoff -a
sudo apt update

sudo modprobe overlay
sudo modprobe br_netfilter

echo "br_netfilter" | sudo tee -a /etc/modules

echo "net.bridge.bridge-nf-call-ip6tables = 1" | sudo tee -a /etc/sysctl.conf
echo "net.bridge.bridge-nf-call-iptables = 1" | sudo tee -a /etc/sysctl.conf
echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.conf

sudo sysctl -p

sudo apt update
sudo apt -y upgrade

sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt update
apt-cache policy docker-ce
sudo apt install -y docker-ce

sudo systemctl start docker
sudo systemctl enable docker 
sudo usermod -aG docker ${USER}

sudo rm /etc/containerd/config.toml
sudo systemctl restart docker 
sudo systemctl restart containerd

# install kubeadm


sudo mkdir /etc/apt/keyrings/

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

sudo apt update

sudo apt install -y kubelet kubeadm kubectl kubernetes-cni

Prerequisit for master node

Turn off ufw or allow this ports: 6443/tcp, 2379–2380/tcp, 10250/tcp, 10251/tcp, 10252/tcp 10255/tcp

Master Node

After initialization of master run this command if gets an error like [ERROR CRI]: container runtime is not running

sudo rm /etc/containerd/config.toml
sudo systemctl restart containerd
  1. Initialize the Kubernetes master node. or execute master.sh from the repository
sudo kubeadm init

After succesfully running, your Kubernetes control plane will be initialized successfully.

  1. Set up local kubeconfig (both for root user and normal user):
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
  1. Apply Weave network
kubectl apply -f https://github.com/weaveworks/weave/releases/download/v2.8.1/weave-daemonset-k8s.yaml
  1. Generate a token for worker nodes to join:
sudo kubeadm token create --print-join-command

Worker Node

  1. Run the following commands on the worker node.
sudo kubeadm reset pre-flight checks
  1. Paste the join command you got from the master node and append --v=5 at the end. Make sure either you are working as sudo user or use sudo before the command

verify Cluster Connection

kubectl get nodes