Setup Kubernetes Master and Worker Nodes Using Kubeadm

Setup Kubernetes Master and Worker Nodes Using Kubeadm

Requirements

Minimum requirement for both master and worker node :-2 cpu, t2-medium, 4gp ram

Using these commands in both the master and worker node

Try to copy-paste the command step by step.

# using 'sudo su' is not a good practice.
sudo apt update
sudo apt-get install -y apt-transport-https ca-certificates curl
sudo apt install docker.io -y

sudo systemctl enable --now docker # enable and start in single command.

# Adding GPG keys.
curl -fsSL "https://packages.cloud.google.com/apt/doc/apt-key.gpg" | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/kubernetes-archive-keyring.gpg

# Add the repository to the sourcelist.
echo 'deb https://packages.cloud.google.com/apt kubernetes-xenial main' | sudo tee /etc/apt/sources.list.d/kubernetes.list

sudo apt update 
sudo apt install kubeadm=1.20.0-00 kubectl=1.20.0-00 kubelet=1.20.0-00 -y

Command for Master node

  1. First switch to super user by this command "sudo su" and then Initialize the Kubernetes master node.
sudo kubeadm init
  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
  1. Expose port 6443 in the Security group for the Worker to connect to Master Node

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

Varification cluster connection

use this command in master

kubectl get nodes

Optional:- Labeling nodes

If you want to label worker nodes, you can use the following command:

kubectl label node <node-name> node-role.kubernetes.io/worker=worker

Optional:- Test a demo pod

If you want to test a demo pod, you can use the following command:

kubectl run hello-world-pod --image=busybox --restart=Never --command -- sh -c "echo 'Hello, World' && sleep 3600"

Conclusion:-

Finally setup of master and worker node using kubeadm done. For more information , you can refer this repo link:- https://github.com/LondheShubham153/kubestarter/blob/main/kubeadm_installation.md

Happy learning!!