Docker and Kubernetes Offline Installation in RHEL7
Docker and Kubernetes Offline Installation in RHEL7
com/kunchalavikram1427
Pre-requisites
• Online Machine: CentOS 7 machine with internet access
• Offline Machine: CentOS 7 machine where Docker & K8s will be installed in offline mode
The idea is to download all the dependencies in the online machine and transfer them to offline machine
Installing Docker
Online Machine
• Login as root
• Configure YUM package manager
yum update
yum install yum-utils device-mapper-persistent-data lvm2
• Add docker repo
yum-config-manager --add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
• Install and enable docker
yum install docker-ce
systemctl start docker
systemctl enable docker
• Check docker version
docker version
• Create a directory to save all the docker dependencies needed for offline machine
mkdir ~/docker_dependencies
cd ~/docker_dependencies
yumdownloader --assumeyes --destdir=$PWD/yum --resolve yum-utils
yumdownloader --assumeyes --destdir=$PWD/dm --resolve device-mapper-persistent-
data
yumdownloader --assumeyes --destdir=$PWD/lvm2 --resolve lvm2
yumdownloader --assumeyes --destdir=$PWD/docker-ce --resolve docker-ce
yumdownloader --assumeyes --destdir=$PWD/se --resolve container-selinux
• Copy this folder to offline machine
Offline Machine
• Login as root
• Install all the dependencies downloaded in the previous step
yum install -y --cacheonly --disablerepo=* docker_dependencies/yum/*.rpm
yum install -y --cacheonly --disablerepo=* docker_dependencies/dm/*.rpm
yum install -y --cacheonly --disablerepo=* docker_dependencies/lvm2/*.rpm
yum install -y --cacheonly --disablerepo=* docker_dependencies/docker-ce/*.rpm
Terminal
• Next step is to find the images required by kubeadm to bootstrap the cluster. Run the
below command in the terminal to get the list of images
kubeadm config images list
Terminal
• We will download all the above images in the online machine and transfer them back to
offline machine for bootstrapping the cluster.
Online Machine
• Login as root
• It is assumed that docker is already up and running in this machine
• Pull all docker images required to setup k8s cluster
docker pull k8s.gcr.io/kube-apiserver:v1.18.3
docker pull k8s.gcr.io/kube-controller-manager:v1.18.3
docker pull k8s.gcr.io/kube-scheduler:v1.18.3
docker pull k8s.gcr.io/kube-proxy:v1.18.3
docker pull k8s.gcr.io/pause:3.2
docker pull k8s.gcr.io/etcd:3.4.3-0
docker pull k8s.gcr.io/coredns:1.6.7
• We will also need the docker image of CNI. For this setup I have used Flannel as the CNI
• Find out the image needed by flannel from the below link
https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-
flannel.yml
It is quay.io/coreos/flannel:v0.12.0-amd64
• Download this docker image as well
docker pull quay.io/coreos/flannel:v0.12.0-amd64
• [Optional] If required, download the images required for setting up Kubernetes
dashboard and ingress controllers like nginx, traefik etc., Since offline machines doesn’t
have access to public internet, feel free to download your docker hub images at this
stage. You can do this after the cluster setup as well.
• Save individual images as a TAR archive
mkdir k8s_images
cd k8s_images
docker save k8s.gcr.io/kube-apiserver:v1.18.3 > kube-api.tar
Check my Github for other tutorials on Docker, Kubernetes, K3s, Helm, Git, Ansible,
Jenkins, Terraform, AWS etc.,