Install Kubernetes on RHEL 7
Setup
Package | Version |
---|---|
OS | RHEL 7.6 |
Kubernetes | 1.23.6 |
Minikube | 1.25.2 |
Container Runtime | Docker |
CPU | 2 core or more |
RAM | 2GB or more |
Disk Space | 10GB or more |
Prerequisites
- Access as root user or user having root privileges
- Docker package installed on server
Download & Install Kubernetes
- Login as root user or with user having root privileges
- Download kubernetes from the official website.
- Copy kubectl binary to /usr/local/bin
- Check version of kubernetes
# curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 154 100 154 0 0 641 0 --:--:-- --:--:-- --:--:-- 641
100 44.4M 100 44.4M 0 0 13.2M 0 0:00:03 0:00:03 --:--:-- 16.5M
# install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
# kubectl version -o yaml
clientVersion:
buildDate: "2022-04-14T08:49:13Z"
compiler: gc
gitCommit: ad3338546da947756e8a88aa6822e9c11e7eac22
gitTreeState: clean
gitVersion: v1.23.6
goVersion: go1.17.9
major: "1"
minor: "23"
platform: linux/amd64
Download & Install Minikube
- Install contrack package from yum repository
- Set the kernel tuning parameter
- Create a new user "kube" to run minikube and setup its group membership.
- Download Minikube from the official website.
- Copy minikube binary to /usr/local/bin
- Switch to kube user
- Start Minikube
- Check Minikube version
- Check Minikube status
- Check Cluster Status
Install/Setup Minikube prerequisite
# yum -y install conntrack
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
Resolving Dependencies
--> Running transaction check
---> Package conntrack-tools.x86_64 0:1.4.4-4.el7 will be installed
--> Processing Dependency: libnetfilter_cttimeout.so.1(LIBNETFILTER_CTTIMEOUT_1.1)(64bit) for package: conntrack-tools-1.4.4-4.el7.x86_64
--> Processing Dependency: libnetfilter_cttimeout.so.1(LIBNETFILTER_CTTIMEOUT_1.0)(64bit) for package: conntrack-tools-1.4.4-4.el7.x86_64
--> Processing Dependency: libnetfilter_cthelper.so.0(LIBNETFILTER_CTHELPER_1.0)(64bit) for package: conntrack-tools-1.4.4-4.el7.x86_64
--> Processing Dependency: libnetfilter_queue.so.1()(64bit) for package: conntrack-tools-1.4.4-4.el7.x86_64
--> Processing Dependency: libnetfilter_cttimeout.so.1()(64bit) for package: conntrack-tools-1.4.4-4.el7.x86_64
--> Processing Dependency: libnetfilter_cthelper.so.0()(64bit) for package: conntrack-tools-1.4.4-4.el7.x86_64
--> Running transaction check
---> Package libnetfilter_cthelper.x86_64 0:1.0.0-9.el7 will be installed
---> Package libnetfilter_cttimeout.x86_64 0:1.0.0-6.el7 will be installed
---> Package libnetfilter_queue.x86_64 0:1.0.2-2.el7_2 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
==============================================================================================================================================================
Package Arch Version Repository Size
==============================================================================================================================================================
Installing:
conntrack-tools x86_64 1.4.4-4.el7 localrepo 186 k
Installing for dependencies:
libnetfilter_cthelper x86_64 1.0.0-9.el7 localrepo 18 k
libnetfilter_cttimeout x86_64 1.0.0-6.el7 localrepo 18 k
libnetfilter_queue x86_64 1.0.2-2.el7_2 localrepo 23 k
Transaction Summary
==============================================================================================================================================================
Install 1 Package (+3 Dependent packages)
Total download size: 245 k
Installed size: 668 k
Downloading packages:
(1/4): libnetfilter_cthelper-1.0.0-9.el7.x86_64.rpm | 18 kB 00:00:00
(2/4): libnetfilter_cttimeout-1.0.0-6.el7.x86_64.rpm | 18 kB 00:00:00
(3/4): libnetfilter_queue-1.0.2-2.el7_2.x86_64.rpm | 23 kB 00:00:00
(4/4): conntrack-tools-1.4.4-4.el7.x86_64.rpm | 186 kB 00:00:00
--------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 2.3 MB/s | 245 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : libnetfilter_cttimeout-1.0.0-6.el7.x86_64 1/4
Installing : libnetfilter_cthelper-1.0.0-9.el7.x86_64 2/4
Installing : libnetfilter_queue-1.0.2-2.el7_2.x86_64 3/4
Installing : conntrack-tools-1.4.4-4.el7.x86_64 4/4
Verifying : conntrack-tools-1.4.4-4.el7.x86_64 1/4
Verifying : libnetfilter_queue-1.0.2-2.el7_2.x86_64 2/4
Verifying : libnetfilter_cthelper-1.0.0-9.el7.x86_64 3/4
Verifying : libnetfilter_cttimeout-1.0.0-6.el7.x86_64 4/4
Installed:
conntrack-tools.x86_64 0:1.4.4-4.el7
Dependency Installed:
libnetfilter_cthelper.x86_64 0:1.0.0-9.el7 libnetfilter_cttimeout.x86_64 0:1.0.0-6.el7 libnetfilter_queue.x86_64 0:1.0.2-2.el7_2
Complete!
# vi /etc/sysctl.conf
net.bridge.bridge-nf-call-iptables = 1
# sysctl -p
# useradd kube
# usermod -aG docker kube && newgrp docker
# usermod -aG docker kube && newgrp docker
Download and Install Minikube.
# curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 69.2M 100 69.2M 0 0 15.0M 0 0:00:04 0:00:04 --:--:-- 16.0M
# install minikube-linux-amd64 /usr/local/bin/minikube
# su - kube
# minikube start --driver=docker
* minikube v1.25.2 on Redhat 7.6
* Using the docker driver based on user configuration
X Requested memory allocation (1838MB) is less than the recommended minimum 1900MB. Deployments may fail.
X The requested memory allocation of 1838MiB does not leave room for system overhead (total system memory: 1838MiB). You may face stability issues.
* Suggestion: Start minikube with less memory allocated: 'minikube start --memory=1838mb'
* Starting control plane node minikube in cluster minikube
* Pulling base image ...
* Downloading Kubernetes v1.23.3 preload ...
> preloaded-images-k8s-v17-v1...: 505.68 MiB / 505.68 MiB 100.00% 14.55 Mi
> gcr.io/k8s-minikube/kicbase: 379.06 MiB / 379.06 MiB 100.00% 6.05 MiB p/
* Creating docker container (CPUs=2, Memory=1838MB) ...
* Preparing Kubernetes v1.23.3 on Docker 20.10.12 ...
- kubelet.housekeeping-interval=5m
- Generating certificates and keys ...
- Booting up control plane ...
- Configuring RBAC rules ...
* Verifying Kubernetes components...
- Using image gcr.io/k8s-minikube/storage-provisioner:v5
* Enabled addons: default-storageclass, storage-provisioner
* Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
# minikube version
minikube version: v1.25.2
commit: 362d5fdc0a3dbee389b3d3f1034e8023e72bd3a7
# minikube status
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured
# kubectl cluster-info
Kubernetes control plane is running at https://192.168.49.2:8443
CoreDNS is running at https://192.168.49.2:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.