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
- First switch to super user by this command "sudo su" and then Initialize the Kubernetes master node.
sudo kubeadm init
- 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
- Apply Weave network:
kubectl apply -f https://github.com/weaveworks/weave/releases/download/v2.8.1/weave-daemonset-k8s.yaml
- Generate a token for worker nodes to join:-
sudo kubeadm token create --print-join-command
- Expose port 6443 in the Security group for the Worker to connect to Master Node
Command for worker node
- Run the following commands on the worker node.
sudo kubeadm reset pre-flight checks
- 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 usesudo
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!!