How to Install a Kubernetes Cluster on CentOS 8


Kubernetes is a powerful tool for managing and deploying containerized applications. It is an open-source system that helps automate the deployment, scaling, and management of containerized applications. If you are looking to install a Kubernetes cluster on CentOS 8, this guide will walk you through the process step by step.

What is Kubernetes?

Kubernetes is an open-source platform for managing containerized workloads and services. It provides a way to automate the deployment, scaling, and management of containerized applications. With Kubernetes, you can deploy and manage applications across a variety of environments, including physical, virtual, and cloud-based infrastructure.

Prerequisites

Before you begin the installation process, you will need to make sure that you have a few things in place −

  • A CentOS 8 server with a minimum of 2GB of RAM and 2 CPUs.

  • Root access to the server.

  • Docker installed on the server.

  • A basic understanding of how to use the command line.

Step 1: Update the System

The first step in installing a Kubernetes cluster on CentOS 8 is to update the system. You can do this by running the following command −

sudo yum update

This command will update all of the packages on your CentOS 8 server.

Step 2: Install Kubernetes and its Dependencies

Next, you will need to install Kubernetes and its dependencies. You can do this by running the following command −

sudo yum install -y kubelet kubeadm kubectl

This command will install the Kubernetes components, including the kubelet, kubeadm, and kubectl.

Step 3: Disable SELinux and Swap

Before you can create a Kubernetes cluster, you will need to disable SELinux and swap on your server. You can do this by running the following commands −

sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

These commands will disable SELinux and swap on your server. Disabling SELinux is necessary because it can interfere with Kubernetes.

Step 4: Initialize the Cluster

Next, you will need to initialize the Kubernetes cluster. You can do this by running the following command −

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

This command will initialize the Kubernetes cluster and set the pod network CIDR to 10.244.0.0/16. The pod network CIDR is the range of IP addresses that will be assigned to the pods in the Kubernetes cluster.

Step 5: Set Up Your User

After the cluster has been initialized, you will need to set up your user. You can do this by running 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

These commands will set up your user and allow you to access the Kubernetes cluster.

Step 6: Install a Pod Network

Now that the Kubernetes cluster has been initialized, you will need to install a pod network. A pod network is a way to allow communication between the pods in the Kubernetes cluster. You can install a pod network by running the following command −

sudo kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

This command will install the Flannel pod network.

Step 7: Join Nodes to the Cluster

Now that you have set up the Kubernetes master node, you can join additional nodes to the cluster to scale your application deployment. You can do this by running the following command on the worker node −

sudo kubeadm join <master_node_ip>:<port> --token <token> --discovery-token-ca-cert-hash <hash>

The <master_node_ip> is the IP address of the Kubernetes master node, <port> is the port number that kubeadm is listening on, <token> is the join token that was generated during the initialization of the master node, and <hash> is the hash of the certificate authority used to secure communication between the nodes.

Step 8: Verify the Cluster

After you have joined the worker nodes to the cluster, you can verify that the Kubernetes cluster is running by running the following command on the master node −

sudo kubectl get nodes

This command will display a list of all the nodes in the cluster, including the master node and the worker nodes.

Additional Steps for Advanced Configuration

While the steps outlined above will get a basic Kubernetes cluster up and running, there are additional steps you can take to configure and customize your cluster for more advanced use cases. Here are a few examples −

  • Set Up Persistent Storage − By default, Kubernetes does not provide persistent storage for your applications. However, you can set up persistent storage by using a storage class and a persistent volume claim. This will allow your applications to store data even if the pod is deleted or recreated.

  • Configure Load Balancing − If you have multiple worker nodes in your Kubernetes cluster, you can configure load balancing to distribute traffic evenly across the nodes. This can help improve the performance and scalability of your applications.

  • Enable Role-Based Access Control (RBAC) − RBAC is a security feature that allows you to control who has access to the Kubernetes API and what they can do with it. By enabling RBAC, you can ensure that only authorized users have access to the Kubernetes cluster and that they can only perform the actions they are authorized to do.

  • Install Monitoring and Logging Tools − Kubernetes provides a rich set of monitoring and logging tools that can help you monitor the health and performance of your applications. By installing tools like Prometheus and Grafana, you can monitor your cluster's resource usage, track the performance of your applications, and troubleshoot issues.

Troubleshooting Common Issues

As with any complex software system, Kubernetes can encounter issues during installation and operation. Here are a few common issues you may encounter and some steps you can take to troubleshoot them −

  • Issue − kubeadm init fails with error "unable to connect to the API server"

  • Solution − This error can occur if the kubelet service is not running on the master node. To fix this, start the kubelet service by running the command

sudo systemctl start kubelet
  • Issue − Worker node fails to join the cluster with error "certificate signed by unknown authority"

  • Solution − This error can occur if the worker node is unable to authenticate with the Kubernetes master node. To fix this, copy the CA certificate from the master node to the worker node by running the command

sudo scp <master_node_ip>:/etc/kubernetes/pki/ca.crt /etc/kubernetes/pki/
  • Issue − Pods are stuck in the "Pending" state

  • Solution − This issue can occur if the pod network is not configured correctly. Make sure that the pod network you have installed is compatible with your Kubernetes version and that it is running properly by running the command

sudo kubectl get pods -n kube-system

Conclusion

In conclusion, installing a Kubernetes cluster on CentOS 8 is a fairly straightforward process. By following the steps outlined in this guide, you can easily set up a Kubernetes cluster and deploy containerized applications. Kubernetes is a powerful tool that can help you manage your applications and infrastructure more efficiently, and with a little bit of effort, you can have your cluster up and running in no time.

Updated on: 28-Apr-2023

1K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements