Kubernetes Cluster Setup

Overview

A Kubernetes cluster is a set of node machines for running containerized applications. If you're running Kubernetes, you're running a cluster.

At a minimum, a cluster contains a control plane and one or more compute machines, or nodes.

The control plane is responsible for maintaining the desired state of the cluster, such as which applications are running and which container images they use.

Nodes actually run the applications and workloads.

Key advantage of kubernetes cluster are:

  • the ability to schedule and run containers across a group of machines, be they physical or virtual, on-premises or in the cloud.
  • Kubernetes containers aren't tied to individual machines.
  • Rather, they're abstracted across the cluster.

Steps for Kubernetes cluster setup

  • The machine needs to have 2 CPU processors and all the machines inthe cluster should be in the same network so that they can ping each other
  • ssh into all the VMS
  • In all the node swap memory should be disabled to check current status use the below command
free -h

to disable swap memory

swapoff -a

Now, make these changes in fstab so after boot, the swap memory will be disabled

vi /etc/fstab

comment all swap related lines(repeat this process in all the nodes)

  • Now install Docker in all the nodes Open the k8 document and check which current docker version is supported by the k8s

  • Install Kubeadm in all the VMS

Check the outcome of the below command in all the nodes, it should be different in all the nodes

sudo cat /sys/class/dmi/id/product_uuid

Now use the below commands to install and update necessary packages

Update the apt package index and install packages needed to use the Kubernetes apt repository:

sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl

Download the Google Cloud public signing key:

sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg

Add the Kubernetes apt repository:

echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

Update apt package index, install kubelet, kubeadm, and kubectl, and pin their version:

sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
  • To initialize the control-plane node run(to create master node use below command on any of the nodes)
kubeadm init --pod-network-cidr=10.244.0.0/16

this will be a ip range of pods.

To start using your cluster, you need to run the following as a regular user:

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

To check the installation of master use below command

kubectl get nodes

You should be able to see one node.

You should now deploy a Pod network to the cluster.with one of the options listed at: here

kubectl apply -f [podnetwork].yaml

You can now join any number of machines by running the following on each node as root:

kubeadm join <control-plane-host>:<control-plane-port> --token <token> --discovery-token-ca-cert-hash sha256:<hash>