Step By Step Guide on Kubeadm

Aditya SahaiAditya Sahai
2 min read

Step 1: Prepare Your Environment

Before you begin, ensure that you have at least two or more Linux-based machines (physical or virtual) with the following prerequisites:

  • A compatible Linux distribution (Ubuntu, CentOS, etc.)

  • Docker installed on all nodes

  • Swap disabled (you can do this by running swapoff -a and removing swap entries from /etc/fstab)

  • Firewall rules open for necessary ports (e.g., port 6443 for Kubernetes API)

Step 2: Install kubeadm, kubelet, and kubectl

You'll need to install kubeadm, kubelet, and kubectl on all your cluster nodes. Use your package manager (e.g., apt for Ubuntu, yum for CentOS) to install these components. For example, on Ubuntu:

shellCopy codesudo apt update
sudo apt install -y kubelet kubeadm kubectl

Step 3: Initialize the Master Node

Choose one of your nodes to be the master node. On that node, initialize the Kubernetes control plane using kubeadm. Run this command:

shellCopy codesudo kubeadm init --pod-network-cidr=10.244.0.0/16

This command initializes the master node and provides you with a command to run on worker nodes to join them to the cluster.

Step 4: Configure kubectl

After initializing the master node, kubeadm will provide you with a command to configure kubectl on your local machine. It's essential to run this command to be able to interact with the cluster from your local terminal.

Step 5: Install a Pod Network Add-on (Optional)

For pods to communicate with each other across nodes, you need to install a network plugin. A popular choice is Calico. Install it using kubectl:

shellCopy codekubectl apply -f https://docs.projectcalico.org/v3.19/manifests/calico.yaml

Step 6: Join Worker Nodes

On each worker node, run the kubeadm join command provided by the kubeadm init output from the master node. It typically looks like this:

shellCopy codesudo kubeadm join <master-node-ip>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>

This command joins the worker node to the Kubernetes cluster.

Step 7: Verify Cluster Setup

Back on the master node, you can verify the cluster's status by running:

shellCopy codekubectl get nodes

You should see all nodes (including the master) in the "Ready" state.

Step 8: Deploy Applications

With your cluster up and running, you can use kubectl to deploy applications and manage your Kubernetes resources.

Conclusion

You've successfully set up a basic Kubernetes cluster using kubeadm. From here, you can explore more advanced configurations, add-ons, and application deployments within your cluster.

0
Subscribe to my newsletter

Read articles from Aditya Sahai directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Aditya Sahai
Aditya Sahai