DEV Community

Cover image for Multinode cluster setup using kubeadm
Surya Shankar
Surya Shankar

Posted on • Edited on

Multinode cluster setup using kubeadm

Kubeadm is a real-time setup, using which we can set up a multi-node Kubernetes cluster.
It is very popular, and you can have multiple VMs on your machine and configure the Kubernetes master and its node components.
If you have limited resources but want to use Kubeadm, you can use some cloud-based virtual machines.

Launch three instance [Here I have used ubuntu server of t2.medium]

Image description

Prerequisites :

1: Check the machines of the cluster can ping each other via ip and hostname
You can change hostname as per this commands.. here I have changed the master and workers hostname

Image description
Image description
Image description

Now paste the ip hostname of three node inside vi /etc/hosts in both master and workers node

Image description
You will be able to ping eachother after this.

2: Swap should be off

Image description

3: Respective Ports in the firewall should be opened

Image description

4: Check for the minimum configuration of the machine from the official documentation

Commands to run on all the nodes [Master and Workers]

Get sudo working

sudo -l
Enter fullscreen mode Exit fullscreen mode

Image description
Image description
Image description

update packages and their version

sudo apt-get update && sudo apt-get upgrade -y
Enter fullscreen mode Exit fullscreen mode

Image description
Image description
Image description

install curl and apt-transport-https

sudo apt-get update && sudo apt-get install -y apt-transport-https curl
Enter fullscreen mode Exit fullscreen mode

add key to verify releases

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
Enter fullscreen mode Exit fullscreen mode

add kubernetes apt repo

cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
Enter fullscreen mode Exit fullscreen mode

install kubelet, kubeadm and kubectl

sudo apt-get update
Enter fullscreen mode Exit fullscreen mode
sudo apt-get install -y kubelet kubeadm kubectl
Enter fullscreen mode Exit fullscreen mode

install docker

sudo apt-get install docker.io
Enter fullscreen mode Exit fullscreen mode

apt-mark hold is used so that these packages will not be updated/removed automatically

sudo apt-mark hold kubelet kubeadm kubectl
Enter fullscreen mode Exit fullscreen mode

After the above commands are successfully run on all the worker nodes. Below steps can be followed to initialize the Kubernetes cluster.

On Leader/master Node
Run the below command on the node that you want to make the leader node. Please make sure you replace the correct IP of the node with IP-of-Node

kubeadm init --pod-network-cidr=10.244.0.0/16 -v=9
Enter fullscreen mode Exit fullscreen mode

Image description

Now run these 3 commands

Image description
Image description

Join worker nodes to the Leader node
Once the command kubeadm init is completed on the leader node, below we would get a command like below in the output of kubeadm init that can be run on worker nodes to make them join the leader node.

kubeadm join 206.189.134.39:6443 --token dxxfoj.a2zzwbfrjejzir4h \
    --discovery-token-ca-cert-hash sha256:110e853989c2401b1e54aef6e8ff0393e05f18d531a75ed107cf6c05ca4170eb
Enter fullscreen mode Exit fullscreen mode

Install CNI plugin
The below command can be run on the leader node to install the CNI plugin

kubectl apply -f
Enter fullscreen mode Exit fullscreen mode
https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
Enter fullscreen mode Exit fullscreen mode

Image description
Image description

kubectl get nodes
Enter fullscreen mode Exit fullscreen mode

Image description

Now deploy a ngnix image and expose to port 80 as shown below

Image description

Paste the ip in the browser, It will shown your image

Image description
Image description

You can access this cluster in your personal laptop by setting up opnVpn setup

Image description

Top comments (0)