Community for developers to learn, share their programming knowledge. Register!
Start Learning Kubernetes

Installing Kubernetes: Step-by-Step Guide


Kubernetes has emerged as a leading platform for automating the deployment, scaling, and management of containerized applications. If you're looking to deepen your understanding of Kubernetes, this article serves as a comprehensive training guide that will walk you through the installation process, ensuring you’re well-equipped to manage your own clusters.

Prerequisites for a Successful Installation

Before diving into the installation process, it’s essential to prepare your environment adequately. Here are the prerequisites you should consider:

Operating System: Kubernetes supports various operating systems, including Linux distributions like Ubuntu, CentOS, and Fedora. Ensure you have a compatible OS with the latest updates installed.

Hardware Requirements: For a basic installation, your system should meet the following minimum requirements:

Networking: A network connection is crucial, as Kubernetes nodes need to communicate with each other. Ensure firewall settings allow for required ports.

Container Runtime: Install a container runtime such as Docker or containerd. For instance, to install Docker on Ubuntu, you can run:

sudo apt-get update
sudo apt-get install -y docker.io

Kubelet, Kubeadm, and Kubectl: These are core components of Kubernetes. You can install them using the following commands:

sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates 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 apt-mark hold kubelet kubeadm kubectl

Having these prerequisites in place will set the foundation for a smooth Kubernetes installation.

Choosing Installation Tool: kubeadm vs. Minikube

Selecting the right tool for Kubernetes installation is crucial and depends on your requirements. The two most popular tools are kubeadm and Minikube.

  • kubeadm: This tool is designed for setting up production-grade clusters. It’s suitable for developers who require a multi-node cluster environment. kubeadm simplifies the installation and configuration of Kubernetes components. It allows you to bootstrap Kubernetes clusters easily, and it provides a more authentic experience of a real-world Kubernetes setup.
  • Minikube: On the other hand, Minikube is primarily aimed at developers looking to learn and experiment with Kubernetes quickly on their local machines. It runs a single-node Kubernetes cluster inside a virtual machine. Minikube is an excellent choice for testing, experimenting, and learning, but it's not intended for production usage.

For this guide, we will focus on using kubeadm to set up a single-node cluster, as it provides a more comprehensive understanding of Kubernetes.

Setting Up a Single Node Cluster

To set up a single-node cluster with kubeadm, follow these steps:

Initialize the Cluster: Start by initializing the Kubernetes cluster. Run the following command on your master node:

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

This command will initialize your cluster and provide a join command for adding nodes later.

Configure kubectl: To manage your cluster, you need to configure kubectl. Execute the following commands:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

Install a Pod Network Add-on: After initializing your cluster, you need to set up a Pod Network Add-on. A popular choice is Calico. To install it, run:

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

Once these steps are completed, you have a functioning single-node Kubernetes cluster ready for further configuration.

Configuring Networking for Cluster

Networking is a critical aspect of any Kubernetes setup, as it allows communication between pods and services. Follow these steps to ensure your cluster is properly configured:

Verify Network Configuration: After installing Calico or your chosen network add-on, verify that all nodes are in a Ready state:

kubectl get nodes

Firewall Rules: Make sure to configure your firewall to allow traffic on the necessary ports. Kubernetes components communicate over several ports, including:

Network Policies: Consider implementing Network Policies to control the communication between pods. For example:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-specific
  namespace: default
spec:
  podSelector:
    matchLabels:
      role: db
  ingress:
  - from:
    - podSelector:
        matchLabels:
          role: frontend

This policy allows only frontend pods to communicate with the database pods. Properly configuring networking ensures the security and efficiency of your Kubernetes cluster.

Installing Dashboard for Cluster Management

Kubernetes Dashboard is a web-based UI that makes it easier to manage and monitor your cluster. Here’s how to install it:

Install Dashboard: You can install the Kubernetes Dashboard using the following command:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.0/aio/deploy/recommended.yaml

Access the Dashboard: To access the dashboard, you need to create a service account and a cluster role binding:

kubectl create serviceaccount dashboard-admin -n kubernetes-dashboard
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:dashboard-admin

Get the Access Token: Retrieve the token to log in to the dashboard:

kubectl get secret -n kubernetes-dashboard $(kubectl get serviceaccount dashboard-admin -n kubernetes-dashboard -o jsonpath="{.secrets[0].name}") -o jsonpath="{.data.token}" | base64 --decode

Start Proxy: Start a proxy to access the dashboard:

kubectl proxy

Now, you can access the dashboard at http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/.

The Kubernetes Dashboard provides a user-friendly way to interact with your cluster, making it easier to manage resources and monitor their states.

Verifying Installation and Checking Status

Once your Kubernetes cluster is set up, it's crucial to verify that everything is functioning correctly. Here are some steps you can take:

Check Node Status: Use the following command to check the status of your nodes:

kubectl get nodes

You should see your node in the "Ready" state.

Check Pod Status: To ensure that all necessary pods are running, execute:

kubectl get pods --all-namespaces

Review the output and confirm that all pods are in the "Running" or "Completed" states.

Check Cluster Components: Validate that all Kubernetes components are functioning properly:

kubectl get cs

This command will show the status of the control plane components, ensuring that your cluster is healthy.

Summary

In this guide, we covered the essential steps for installing Kubernetes using kubeadm. We started with the prerequisites, discussed the choice between kubeadm and Minikube, and provided a step-by-step approach to setting up a single-node cluster. We also looked into configuring networking, installing the Kubernetes Dashboard, and verifying the installation's success.

By following this installation guide, you should now have a solid foundation to start experimenting with Kubernetes effectively. Whether you plan to deploy applications or manage services, this knowledge will be invaluable as you continue your journey in the world of container orchestration.

Last Update: 22 Jan, 2025

Topics: