How to do Kubernetes setup
Let’s see how to do Kubernetes setup on a server cluster. The example is applied on a machine cluster running CentOS7 but can be replicated on any Linux-based machine.
Kubernetes Set Up
Let’s look together at all the steps related to Kuberntes set up(link to the art what is Kubernetes) in as much detail as possible.
Prerequisites
We need:
- Multiple servers running CentOS7 (1 master node and 1+ worker nodes)
- One user account on each machine with administrative privileges
- Docker(link to the What is Docker art) installed on each machine
Configuring the Kubernetes repository
First, we must always consider that Kubernetes packages are not available through the official CentOS 7 repositories. This step therefore must be executed on the master node and on each worker node.
It is therefore the following command that must be run to retrieve the repository from which to subsequently retrieve the installer for Kubernetes:
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
Installation of kubelet, kubeadm, and kubectl
These 3 basic packages are required to be able to use Kubernetes. Install the following packages on each node doing so as you see in the example:
sudo yum install -y kubelet kubeadm kubectl
systemctl enable kubelet
systemctl start kubelet
Before deploying a cluster, be sure to set up hostnames by configuring the firewall and kernel settings.
Set the hostname of a node
To give a unique host name to each of your nodes, use this command:
sudo hostnamectl set-hostname master-node
or
sudo hostnamectl set-hostname worker-node1
In this example, the master node is now named master-node, while a worker node is named worker-node1.
It now creates a DNS record to resolve the hostname for all nodes:
192.168.1.10 master.example.com master-node
192.168.1.20 node1. example.com node1 worker-node
Configure the firewall
Nodes, containers and pods must be able to communicate across the cluster to perform their functions. On CentOS by default Firewalld is installed. Add the following ports by entering the commands listed.
On the Master Node therefore run:
sudo firewall-cmd –permanent –add-port=6443/tcp
sudo firewall-cmd –permanent –add-port=2379-2380/tcp
sudo firewall-cmd –permanent –add-port=10250/tcp
sudo firewall-cmd –permanent –add-port=10251/tcp
sudo firewall-cmd –permanent –add-port=10252/tcp
sudo firewall-cmd –permanent –add-port=10255/tcp
sudo firewall-cmd –reload
Having arrived at this point run these commands on each worker node:
sudo firewall-cmd –permanent –add-port=10251/tcp
sudo firewall-cmd –permanent –add-port=10255/tcp
firewall-cmd –reload
Update Iptables Settings
Set the value of net.bridge.bridge-nf-call-iptables to “1” in the sysctl configuration file. This ensures that packets are properly processed by the IP tables when filtering and port forwarding.
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl –system
Disable SELinux
Containers must access the host filesystem. SELinux must be set to permissive mode, which disables its security features.
Use the following commands to disable SELinux
sudo setenforce 0
sudo sed -i ‘s/^SELINUX=enforcing$/SELINUX=permissive/’ /etc/selinux/config
Disable SWAP
Finally, we must disable SWAP to allow kubelet to function properly:
sudo sed -i ‘/swap/d’ /etc/fstab
sudo swapoff -a
Create a cluster with kubeadm
Initialize the cluster with the following command:
sudo kubeadm init –pod-network-cidr=10.244.0.0/16
The process may take several minutes to complete depending on network speed. Upon completion of this command, a kubeadm join message is displayed. Make a note of the record and use it to join the worker nodes to the cluster at a later stage.
Manage the cluster as a standard user
To use the cluster you must be able to log in as a standard user. Run the following set of commands:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Set Pod Network
The pod network allows nodes within the cluster to communicate with each other. Several Kubernetes network options are available. Use the following command to install the flannel pod network add-on:
sudo kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
If you decide to use flannel, change the firewall rules to allow traffic on flannel’s default port 8285.
Verify kluster status
Verify the status of the nodes by running the following command on the master server:
sudo kubectl get nodes
Once a pod network is installed, you can confirm that it is working by checking that the CoreDNS pod is running by typing:
sudo kubectl get pods –all-namespaces
Add a worker node to the cluster
You can use the kubeadm join command on each worker node to connect it to the cluster.
kubeadm join –discovery-token cfgrty.1234567890jyrfgd –discovery-token-ca-cert-hash sha256:1234..cdef 1.2.3.4:6443
In conclusion
You have successfully installed Kubernetes on CentOS and can now manage clusters on multiple servers.
This Kubernetes tutorial provides a good starting point for exploring the many options this platform has to offer. Use Kubernetes to autoscale your containers so you can spend less time micro-managing each one!
Replace the codes with those on your main server. Repeat this action for each worker node on your cluster.
Comments