DEV Community

Cover image for Kubernetes Cluster Step By Step
Neeraj Kumar
Neeraj Kumar

Posted on

94 1 1 1 1

Kubernetes Cluster Step By Step

A Kubernetes cluster is a group of nodes or machines running together. At the highest level of Kubernetes, there are two types of servers: a Master node and Worker nodes. These servers can be either Virtual Machines (VMs) or physical servers (Bare metal). Together, these servers form a Kubernetes cluster, and they are controlled by the services that make up the Control Plane.

Prerequisites:

  • Choose a Cloud Provider: Popular choices include AWS, Google Cloud Platform (GCP), Microsoft Azure, and others. Alternatively, you can use on-premises solutions like VMware or tools like Minikube for local development.

  • Install Necessary Tools: kubectl: Kubernetes command-line tool kubeadm, kubelet, and kubernetes-cni: Install these on each cluster node.

Step 1: Provision the Infrastructure
On Cloud Providers:

  • Create VM instances or nodes based on your chosen provider.

  • Ensure that each node has a compatible OS (Ubuntu, CentOS, etc.).
    

On-Premises or Local:

  • Set up physical or virtual machines.
    
  • Ensure network connectivity between nodes.
    

Step 2: Install Docker (or Another Container Runtime)
Install Docker on each node or use an alternative container runtime:

# For Ubuntu
sudo apt update
sudo apt install docker.io
sudo systemctl enable --now docker

Enter fullscreen mode Exit fullscreen mode

Step 3: Install kubeadm, kubelet, and kubectl

# For Ubuntu
sudo apt-get update && sudo apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo systemctl enable --now kubelet

Enter fullscreen mode Exit fullscreen mode

Step 4: Initialize the Master Node

sudo kubeadm init --pod-network-cidr=10.244.0.0/16

Enter fullscreen mode Exit fullscreen mode

Step 5: Set Up Cluster Networking
Choose a network plugin for your cluster. For example, Calico or Flannel. Install the chosen plugin on the master node:

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

Enter fullscreen mode Exit fullscreen mode

Step 6: Join Worker Nodes
run the kubeadm join command provided at the end of the master node initialization.

sudo kubeadm join <master-node-ip>:<master-node-port> --token <token> --discovery-token-ca-cert-hash <hash>

Enter fullscreen mode Exit fullscreen mode

Step 7: Verify Cluster Setup

On the master node, run:

kubectl get nodes
kubectl get pods --all-namespaces

Enter fullscreen mode Exit fullscreen mode

Step 8: Deploy an Application
Deploy a sample application to test your cluster:

kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort

Enter fullscreen mode Exit fullscreen mode

Step 9: Access Your Application
Retrieve the NodePort and access the deployed application:

kubectl get svc

Enter fullscreen mode Exit fullscreen mode

Visit http://node-ip:node-port in your web browser.

https://kubernetes.io/

AWS GenAI LIVE image

Real challenges. Real solutions. Real talk.

From technical discussions to philosophical debates, AWS and AWS Partners examine the impact and evolution of gen AI.

Learn more

Top comments (0)

AWS GenAI LIVE image

Real challenges. Real solutions. Real talk.

From technical discussions to philosophical debates, AWS and AWS Partners examine the impact and evolution of gen AI.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay