This document describes the installation of Kubernetes version 1.31.4 on a server with RHEL (Red Hat Enterprise Linux) 9.x operating system. It also applies on Rocky Linux 9.x distributions.


File to Download

Please contact us for the download link of latest version of Apinizer at support@apinizer.com mail address.

Kubernetes, Containerd, Mongodb and Elasticsearch installation files for Rhel 9.x OS:
Filename: offlineApinizerInstallation-K8S-1.31-Rhel9.x.tar (980.2 MB)
Download Link: https://fss.apinizer.com/index.php/s/HZztMxazPsJY09P
POWERSHELL

The instructions in the next steps are also available in the relevant files and they are also clearly shared here for servers that may have limited access to the internet.

The command "tar xvzf fileName.tar" or "tar xf fileName.tar" can be used to extract the files.

Create Apinizer user

adduser apinizer
usermod -aG wheel apinizer
passwd apinizer
POWERSHELL

Stop and disable the Firewall

# Firewall is turned off
sudo systemctl stop firewalld
sudo systemctl disable firewalld
POWERSHELL

Disable the Selinux

# Disable SELinux to prevent communication problems on servers.
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

# Close swap and delete the swap line in /etc/fstab to prevent it from restarting.
sudo swapoff -a
sudo vi /etc/fstab
POWERSHELL

1) Installing Containerd Packages

sudo yum install -y --cacheonly --disablerepo=* required_rpms/*.rpm --skip-broken
POWERSHELL
#containerd module settings
sudo mkdir -p /etc/containerd   
 
sudo containerd config default | sudo tee /etc/containerd/config.toml
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml
 
 
#initializing and starting the containerd module 
sudo systemctl restart containerd
sudo systemctl enable containerd
systemctl status containerd
POWERSHELL

runc conflicts

If containerd service couldnt installed, use the commands below to check the possible conflicts

[apinizer@redhat ~]$ sudo rpm -ivh required_rpms/containerd.io-1.6.32-3.1.el8.x86_64.rpm
warning: required_rpms/containerd.io-1.6.32-3.1.el8.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID 621e9f35: NOKEY
error: Failed dependencies:
        runc conflicts with containerd.io-1.6.32-3.1.el8.x86_64
        runc is obsoleted by containerd.io-1.6.32-3.1.el8.x86_64
BASH

If there is conflict with runc, remove it

sudo yum remove -y runc
# Try to install containerd again
sudo yum install -y --cacheonly --disablerepo=* required_rpms/*.rpm --skip-broken
BASH

2) Installing Kubernetes Packages

sudo modprobe overlay
sudo modprobe br_netfilter
 
sudo tee /etc/modules-load.d/k8s.conf <<EOF
overlay
br_netfilter
EOF

sudo vi /etc/sysctl.d/k8s.conf
POWERSHELL
net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1
net.ipv4.ip_forward=1
net.ipv4.tcp_max_syn_backlog=40000
net.core.somaxconn=40000
net.core.wmem_default=8388608
net.core.rmem_default=8388608
net.ipv4.tcp_sack=1
net.ipv4.tcp_window_scaling=1
net.ipv4.tcp_fin_timeout=15
net.ipv4.tcp_keepalive_intvl=30
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_moderate_rcvbuf=1
net.core.rmem_max=134217728
net.core.wmem_max=134217728
net.ipv4.tcp_mem=134217728 134217728 134217728
net.ipv4.tcp_rmem=4096 277750 134217728
net.ipv4.tcp_wmem=4096 277750 134217728
net.core.netdev_max_backlog=300000
POWERSHELL
sudo sysctl --system
POWERSHELL
sudo yum install -y --cacheonly --disablerepo=* kube_rpms/*.rpm --skip-broken
POWERSHELL


systemctl enable --now kubelet.service
 
#Kubernetes installation control
kubectl version --client && kubeadm version 
POWERSHELL

3) Installing Kubernetes Images

sudo ctr --namespace k8s.io images import kube_images/kube-apiserver-v1.31.4.tar           
sudo ctr --namespace k8s.io images import kube_images/kube-controller-manager-v1.31.4.tar  
sudo ctr --namespace k8s.io images import kube_images/kube-scheduler-v1.31.4.tar           
sudo ctr --namespace k8s.io images import kube_images/kube-proxy-v1.31.4.tar               
sudo ctr --namespace k8s.io images import kube_images/pause-3.10.tar                       
sudo ctr --namespace k8s.io images import kube_images/etcd-3.5.15-0.tar                    
sudo ctr --namespace k8s.io images import kube_images/coredns-v1.11.3.tar                  
sudo ctr --namespace k8s.io images import kube_images/flannel-cni-plugin-v1.6.2.tar        
sudo ctr --namespace k8s.io images import kube_images/flannel-v0.26.4.tar  
POWERSHELL


Although Kubernetes uses pause 3.10, containerd stays at 3.8 and this can cause the cluster not to start during kubeadm init. To fix this, you can change the pause version to 3.10 in the configuration file in /etc/containerd.


4) Kubeadm Init


This node will be chosen as the Kubernetes Control Plane since it is the first node in the cluster.

sudo kubeadm init --pod-network-cidr="10.244.0.0/16" --control-plane-endpoint="<MASTER_SERVER_IP_ADDRESS>" --upload-certs --kubernetes-version=v1.31.4
POWERSHELL
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
POWERSHELL

To include a worker node in the cluster:

You can get the cluster inclusion command as output by running the following command on the master node.

kubeadm token create --print-join-command
POWERSHELL

5) Creating Flannel

kubectl apply -f flannel_yaml/kube-flannel.yml
POWERSHELL

6) Installing Apinizer Images

sudo tar xvf <APINIZER_VERSION>.tar 
POWERSHELL
sudo ctr --namespace k8s.io images import manager-<APINIZER_VERSION>.tar apinizercloud/manager:<APINIZER_VERSION>
sudo ctr --namespace k8s.io images import worker-<APINIZER_VERSION>.tar apinizercloud/worker:<APINIZER_VERSION>
sudo ctr --namespace k8s.io images import cache-<APINIZER_VERSION>.tar apinizercloud/cache:<APINIZER_VERSION>
sudo ctr --namespace k8s.io images import integration-<APINIZER_VERSION>.tar apinizercloud/integration:<APINIZER_VERSION>
sudo ctr --namespace k8s.io images import portal-<APINIZER_VERSION>.tar apinizercloud/portal:<APINIZER_VERSION>
POWERSHELL

7) Installing MongoDB

sudo yum install -y --cacheonly --disablerepo=* <MONGODB_RPM_DIRECTORY>/*.rpm --skip-broken
POWERSHELL

After the installation, the MongoDB configurations are the same as those in the document Installation of MongoDB on Red Hat OS.


8) Elasticsearch Installation

sudo mkdir /opt/elasticsearch

# Move the file inside the offline installation folders.
sudo mv <ELASTICSEARCH_DIRECTORY>/elasticsearch-7.9.2-linux-x86_64.tar.gz /opt/elasticsearch/ 
 
cd /opt/elasticsearch
sudo tar -xzf elasticsearch-7.9.2-linux-x86_64.tar.gz
POWERSHELL

After moving the installation file from its directory to the /opt/elasticsearch/ folder, you can perform the configurations on the Elasticsearch Installation on Red Hat Operating System page.


9) Apinizer Installation

Perform the Apinizer installation through the Apinizer Installation and Configuration page.