How to install kubernetes cluster on CentOS 7 VM

Dear friends, today we will see how to install kubernetes cluster on CentOS 7 VM step by step. In this tutorial we also know what is kubernetes and how its work? So, let’s start.

What is Kubernetes?

Kubernetes is an open source software or tool which can be used to orchestrate and manage docker containers in cluster environment.

For more details about kubernetes you can also Click Here

In this tutorial I am using three CentOS 7 VM to see how to install kubernetes cluster, where one node will be Master node and another two node will be worker nodes. As you can see below:-

install kubernetes

On the Master Node we have to install these components

  1. API Server: – API sever will provides kubernetes API using Jason / Yaml over http, states of API objects are stored in etcd.
  2. Scheduler: – Scheduler is a program on master node which performs the scheduling tasks like launching containers in worker nodes based on resource availability.
  3. Controller Manager: – Controller manager can be used to monitor replication controllers and create pods to maintain desired state.
  4. Etcd: – It is a Key value pair data base. It stores configuration data of cluster and cluster state.
  5. Kubectl utility: – Kubectl utility is a command line utility which connects to API Server on port 6443. It’s used by administrators to create pods and services.

On the Worker Nodes we must install these components

  1. Kubelet: – Kubelet is an agent which runs on every worker node, it connects to docker and takes care of creating, starting, deleting containers.
  2. Kube-Proxy: – Kube-Proxy routes the traffic to appropriate containers based on IP address and port number of the incoming request. In other words, we can say it is used for port translation.
  3. Pod: – Pod can be defined as a multi-tier or group of containers that are deployed on a single worker node or docker host.

For more about Kubernetes cluster you can Click-Here

Let’s start install Kubernetes step by step.

Disable SELinux & Setup firewall rules

First, we have to login on our master node and we need to be setup SELinux and Firewall rules for master node using below commands

[root@localhost ~]# hostnamectl set-hostname urclouds-master
[root@localhost ~]# exec bash
[root@urclouds-master ~]# setenforce 0
[root@urclouds-master ~]# sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
[root@urclouds-master ~]# 

Following rules, we need to set on our master node

[root@urclouds-master ~]# firewall-cmd --permanent --add-port=6443/tcp
success
[root@urclouds-master ~]# firewall-cmd --permanent --add-port=2379-2380/tcp
success
[root@urclouds-master ~]# firewall-cmd --permanent --add-port=10250/tcp
success
[root@urclouds-master ~]# firewall-cmd --permanent --add-port=10251/tcp
success
[root@urclouds-master ~]# firewall-cmd --permanent --add-port=10252/tcp
success
[root@urclouds-master ~]# firewall-cmd --permanent --add-port=10255/tcp
success
[root@urclouds-master ~]# firewall-cmd --reload
success
[root@urclouds-master ~]# modprobe br_netfilter
[root@urclouds-master ~]# echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables
[root@urclouds-master ~]#

If you don’t have any DNS then you can add entry in /etc/hosts file on Master node and worker node. Like below: –

install kubernetes

Configure Kubernetes Repository

We need to be configure repository for downloading kubernetes packages.

[root@urclouds-master ~]# vi /etc/yum.repos.d/kubernetes.repo
[root@urclouds-master ~]# cat /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
[root@urclouds-master ~]#

Install Kubeadm and Docker

Now we can install Kubeadm and Docker package on master node using yum tool like below: –

[root@urclouds-master ~]# yum install kubeadm docker -y
 Loaded plugins: fastestmirror
 Loading mirror speeds from cached hostfile
 base: mirrors.piconets.webwerks.in
 extras: mirrors.nhanhoa.com
 updates: mirrors.piconets.webwerks.in
 kubernetes/signature                                                                                                                             |  454 B  00:00:00
 kubernetes/signature                                                                                                                             | 1.4 kB  00:00:00 !!!
 Resolving Dependencies
 --> Running transaction check
 ---> Package docker.x86_64 2:1.13.1-103.git7f2769b.el7.centos will be installed
 --> Processing Dependency: docker-common = 2:1.13.1-103.git7f2769b.el7.centos for package: 2:docker-1.13.1-103.git7f2769b.el7.centos.x86_64
 --> Processing Dependency: docker-client = 2:1.13.1-103.git7f2769b.el7.centos for package: 2:docker-1.13.1-103.git7f2769b.el7.centos.x86_64
 --> Processing Dependency: subscription-manager-rhsm-certificates for package: 2:docker-1.13.1-103.git7f2769b.el7.centos.x86_64
 --> Processing Dependency: libseccomp.so.2()(64bit) for package: 2:docker-1.13.1-103.git7f2769b.el7.centos.x86_64
 ---> Package kubeadm.x86_64 0:1.16.3-0 will be installed
 --> Processing Dependency: kubernetes-cni >= 0.7.5 for package: kubeadm-1.16.3-0.x86_64
 --> Processing Dependency: kubelet >= 1.13.0 for package: kubeadm-1.16.3-0.x86_64
 --> Processing Dependency: kubectl >= 1.13.0 for package: kubeadm-1.16.3-0.x86_64
 --> Processing Dependency: cri-tools >= 1.13.0 for package: kubeadm-1.16.3-0.x86_64
 --> Running transaction check
 ---> Package cri-tools.x86_64 0:1.13.0-0 will be installed
 ---> Package docker-client.x86_64 2:1.13.1-103.git7f2769b.el7.centos will be installed
 ---> Package docker-common.x86_64 2:1.13.1-103.git7f2769b.el7.centos will be installed
 --> Processing Dependency: skopeo-containers >= 1:0.1.26-2 for package: 2:docker-common-1.13.1-103.git7f2769b.el7.centos.x86_64
 --> Processing Dependency: oci-umount >= 2:2.3.3-3 for package: 2:docker-common-1.13.1-103.git7f2769b.el7.centos.x86_64
 --> Processing Dependency: oci-systemd-hook >= 1:0.1.4-9 for package: 2:docker-common-1.13.1-103.git7f2769b.el7.centos.x86_64
 --> Processing Dependency: oci-register-machine >= 1:0-5.13 for package: 2:docker-common-1.13.1-103.git7f2769b.el7.centos.x86_64
 --> Processing Dependency: container-storage-setup >= 0.9.0-1 for package: 2:docker-common-1.13.1-103.git7f2769b.el7.centos.x86_64
 --> Processing Dependency: container-selinux >= 2:2.51-1 for package: 2:docker-common-1.13.1-103.git7f2769b.el7.centos.x86_64
 --> Processing Dependency: atomic-registries for package: 2:docker-common-1.13.1-103.git7f2769b.el7.centos.x86_64
 ---> Package kubectl.x86_64 0:1.16.3-0 will be installed
 ---> Package kubelet.x86_64 0:1.16.3-0 will be installed
 --> Processing Dependency: socat for package: kubelet-1.16.3-0.x86_64
 --> Processing Dependency: conntrack for package: kubelet-1.16.3-0.x86_64
 ---> Package kubernetes-cni.x86_64 0:0.7.5-0 will be installed
 ---> Package libseccomp.x86_64 0:2.3.1-3.el7 will be installed
 ---> Package subscription-manager-rhsm-certificates.x86_64 0:1.24.13-3.el7.centos will be installed
 --> Running transaction check
 ---> Package atomic-registries.x86_64 1:1.22.1-29.gitb507039.el7 will be installed
 --> Processing Dependency: python-yaml for package: 1:atomic-registries-1.22.1-29.gitb507039.el7.x86_64
 --> Processing Dependency: python-setuptools for package: 1:atomic-registries-1.22.1-29.gitb507039.el7.x86_64
 --> Processing Dependency: python-pytoml for package: 1:atomic-registries-1.22.1-29.gitb507039.el7.x86_64
 ---> Package conntrack-tools.x86_64 0:1.4.4-5.el7_7.2 will be installed
 --> Processing Dependency: libnetfilter_cttimeout.so.1(LIBNETFILTER_CTTIMEOUT_1.1)(64bit) for package: conntrack-tools-1.4.4-5.el7_7.2.x86_64
 --> Processing Dependency: libnetfilter_cttimeout.so.1(LIBNETFILTER_CTTIMEOUT_1.0)(64bit) for package: conntrack-tools-1.4.4-5.el7_7.2.x86_64
 --> Processing Dependency: libnetfilter_cthelper.so.0(LIBNETFILTER_CTHELPER_1.0)(64bit) for package: conntrack-tools-1.4.4-5.el7_7.2.x86_64
 --> Processing Dependency: libnetfilter_queue.so.1()(64bit) for package: conntrack-tools-1.4.4-5.el7_7.2.x86_64
 --> Processing Dependency: libnetfilter_cttimeout.so.1()(64bit) for package: conntrack-tools-1.4.4-5.el7_7.2.x86_64
 --> Processing Dependency: libnetfilter_cthelper.so.0()(64bit) for package: conntrack-tools-1.4.4-5.el7_7.2.x86_64
 ---> Package container-selinux.noarch 2:2.107-3.el7 will be installed
 --> Processing Dependency: selinux-policy-targeted >= 3.13.1-216.el7 for package: 2:container-selinux-2.107-3.el7.noarch
 --> Processing Dependency: selinux-policy-base >= 3.13.1-216.el7 for package: 2:container-selinux-2.107-3.el7.noarch
 --> Processing Dependency: selinux-policy >= 3.13.1-216.el7 for package: 2:container-selinux-2.107-3.el7.noarch
 --> Processing Dependency: policycoreutils-python for package: 2:container-selinux-2.107-3.el7.noarch
 ---> Package container-storage-setup.noarch 0:0.11.0-2.git5eaf76c.el7 will be installed
 ---> Package containers-common.x86_64 1:0.1.37-3.el7.centos will be installed
 ---> Package oci-register-machine.x86_64 1:0-6.git2b44233.el7 will be installed
 ---> Package oci-systemd-hook.x86_64 1:0.2.0-1.git05e6923.el7_6 will be installed
 --> Processing Dependency: libyajl.so.2()(64bit) for package: 1:oci-systemd-hook-0.2.0-1.git05e6923.el7_6.x86_64
 ---> Package oci-umount.x86_64 2:2.5-3.el7 will be installed
 ---> Package socat.x86_64 0:1.7.3.2-2.el7 will be installed
 --> Running transaction check
 ---> Package PyYAML.x86_64 0:3.10-11.el7 will be installed
 --> Processing Dependency: libyaml-0.so.2()(64bit) for package: PyYAML-3.10-11.el7.x86_64
 ---> Package libnetfilter_cthelper.x86_64 0:1.0.0-10.el7_7.1 will be installed
 ---> Package libnetfilter_cttimeout.x86_64 0:1.0.0-6.el7_7.1 will be installed
 ---> Package libnetfilter_queue.x86_64 0:1.0.2-2.el7_2 will be installed
 ---> Package policycoreutils-python.x86_64 0:2.5-33.el7 will be installed
 --> Processing Dependency: policycoreutils = 2.5-33.el7 for package: policycoreutils-python-2.5-33.el7.x86_64
 --> Processing Dependency: setools-libs >= 3.3.8-4 for package: policycoreutils-python-2.5-33.el7.x86_64
 --> Processing Dependency: libsemanage-python >= 2.5-14 for package: policycoreutils-python-2.5-33.el7.x86_64
 --> Processing Dependency: audit-libs-python >= 2.1.3-4 for package: policycoreutils-python-2.5-33.el7.x86_64
 --> Processing Dependency: python-IPy for package: policycoreutils-python-2.5-33.el7.x86_64
 --> Processing Dependency: libqpol.so.1(VERS_1.4)(64bit) for package: policycoreutils-python-2.5-33.el7.x86_64
 --> Processing Dependency: libqpol.so.1(VERS_1.2)(64bit) for package: policycoreutils-python-2.5-33.el7.x86_64
 --> Processing Dependency: libcgroup for package: policycoreutils-python-2.5-33.el7.x86_64
 --> Processing Dependency: libapol.so.4(VERS_4.0)(64bit) for package: policycoreutils-python-2.5-33.el7.x86_64
 --> Processing Dependency: checkpolicy for package: policycoreutils-python-2.5-33.el7.x86_64
 --> Processing Dependency: libqpol.so.1()(64bit) for package: policycoreutils-python-2.5-33.el7.x86_64
 --> Processing Dependency: libapol.so.4()(64bit) for package: policycoreutils-python-2.5-33.el7.x86_64
 ---> Package python-pytoml.noarch 0:0.1.14-1.git7dea353.el7 will be installed
 ---> Package python-setuptools.noarch 0:0.9.8-7.el7 will be installed
 --> Processing Dependency: python-backports-ssl_match_hostname for package: python-setuptools-0.9.8-7.el7.noarch
 ---> Package selinux-policy.noarch 0:3.13.1-192.el7 will be updated
 ---> Package selinux-policy.noarch 0:3.13.1-252.el7.1 will be an update
 --> Processing Dependency: libsemanage >= 2.5-13 for package: selinux-policy-3.13.1-252.el7.1.noarch
 ---> Package selinux-policy-targeted.noarch 0:3.13.1-192.el7 will be updated
 ---> Package selinux-policy-targeted.noarch 0:3.13.1-252.el7.1 will be an update
 ---> Package yajl.x86_64 0:2.0.4-4.el7 will be installed
 --> Running transaction check
 ---> Package audit-libs-python.x86_64 0:2.8.5-4.el7 will be installed
 --> Processing Dependency: audit-libs(x86-64) = 2.8.5-4.el7 for package: audit-libs-python-2.8.5-4.el7.x86_64
 ---> Package checkpolicy.x86_64 0:2.5-8.el7 will be installed
 ---> Package libcgroup.x86_64 0:0.41-21.el7 will be installed
 ---> Package libsemanage.x86_64 0:2.5-11.el7 will be updated
 ---> Package libsemanage.x86_64 0:2.5-14.el7 will be an update
 --> Processing Dependency: libsepol >= 2.5-10 for package: libsemanage-2.5-14.el7.x86_64
 --> Processing Dependency: libselinux >= 2.5-14 for package: libsemanage-2.5-14.el7.x86_64
 ---> Package libsemanage-python.x86_64 0:2.5-14.el7 will be installed
 ---> Package libyaml.x86_64 0:0.1.4-11.el7_0 will be installed
 ---> Package policycoreutils.x86_64 0:2.5-22.el7 will be updated
 ---> Package policycoreutils.x86_64 0:2.5-33.el7 will be an update
 --> Processing Dependency: libselinux-utils >= 2.5-14 for package: policycoreutils-2.5-33.el7.x86_64
 ---> Package python-IPy.noarch 0:0.75-6.el7 will be installed
 ---> Package python-backports-ssl_match_hostname.noarch 0:3.5.0.1-1.el7 will be installed
 --> Processing Dependency: python-ipaddress for package: python-backports-ssl_match_hostname-3.5.0.1-1.el7.noarch
 --> Processing Dependency: python-backports for package: python-backports-ssl_match_hostname-3.5.0.1-1.el7.noarch
 ---> Package setools-libs.x86_64 0:3.3.8-4.el7 will be installed
 --> Running transaction check
 ---> Package audit-libs.x86_64 0:2.8.1-3.el7 will be updated
 --> Processing Dependency: audit-libs(x86-64) = 2.8.1-3.el7 for package: audit-2.8.1-3.el7.x86_64
 ---> Package audit-libs.x86_64 0:2.8.5-4.el7 will be an update
 ---> Package libselinux.x86_64 0:2.5-12.el7 will be updated
 --> Processing Dependency: libselinux(x86-64) = 2.5-12.el7 for package: libselinux-python-2.5-12.el7.x86_64
 ---> Package libselinux.x86_64 0:2.5-14.1.el7 will be an update
 ---> Package libselinux-utils.x86_64 0:2.5-12.el7 will be updated
 ---> Package libselinux-utils.x86_64 0:2.5-14.1.el7 will be an update
 ---> Package libsepol.x86_64 0:2.5-8.1.el7 will be updated
 ---> Package libsepol.x86_64 0:2.5-10.el7 will be an update
 ---> Package python-backports.x86_64 0:1.0-8.el7 will be installed
 ---> Package python-ipaddress.noarch 0:1.0.16-2.el7 will be installed
 --> Running transaction check
 ---> Package audit.x86_64 0:2.8.1-3.el7 will be updated
 ---> Package audit.x86_64 0:2.8.5-4.el7 will be an update
 ---> Package libselinux-python.x86_64 0:2.5-12.el7 will be updated
 ---> Package libselinux-python.x86_64 0:2.5-14.1.el7 will be an update
 --> Finished Dependency Resolution 
 Dependencies Resolved
 ========================================================================================================================================================================
  Package                                                 Arch                    Version                                              Repository                   Size
 Installing:
  docker                                                  x86_64                  2:1.13.1-103.git7f2769b.el7.centos                   extras                       18 M
  kubeadm                                                 x86_64                  1.16.3-0                                             kubernetes                  9.5 M
 Installing for dependencies:
  PyYAML                                                  x86_64                  3.10-11.el7                                          base                        153 k
  atomic-registries                                       x86_64                  1:1.22.1-29.gitb507039.el7                           extras                       35 k
  audit-libs-python                                       x86_64                  2.8.5-4.el7                                          base                         76 k
  checkpolicy                                             x86_64                  2.5-8.el7                                            base                        295 k
  conntrack-tools                                         x86_64                  1.4.4-5.el7_7.2                                      updates                     187 k
  container-selinux                                       noarch                  2:2.107-3.el7                                        extras                       39 k
  container-storage-setup                                 noarch                  0.11.0-2.git5eaf76c.el7                              extras                       35 k
  containers-common                                       x86_64                  1:0.1.37-3.el7.centos                                extras                       21 k
  cri-tools                                               x86_64                  1.13.0-0                                             kubernetes                  5.1 M
  docker-client                                           x86_64                  2:1.13.1-103.git7f2769b.el7.centos                   extras                      3.9 M
  docker-common                                           x86_64                  2:1.13.1-103.git7f2769b.el7.centos                   extras                       97 k
  kubectl                                                 x86_64                  1.16.3-0                                             kubernetes                   10 M
  kubelet                                                 x86_64                  1.16.3-0                                             kubernetes                   22 M
  kubernetes-cni                                          x86_64                  0.7.5-0                                              kubernetes                   10 M
  libcgroup                                               x86_64                  0.41-21.el7                                          base                         66 k
  libnetfilter_cthelper                                   x86_64                  1.0.0-10.el7_7.1                                     updates                      18 k
  libnetfilter_cttimeout                                  x86_64                  1.0.0-6.el7_7.1                                      updates                      18 k
  libnetfilter_queue                                      x86_64                  1.0.2-2.el7_2                                        base                         23 k
  libseccomp                                              x86_64                  2.3.1-3.el7                                          base                         56 k
  libsemanage-python                                      x86_64                  2.5-14.el7                                           base                        113 k
  libyaml                                                 x86_64                  0.1.4-11.el7_0                                       base                         55 k
  oci-register-machine                                    x86_64                  1:0-6.git2b44233.el7                                 extras                      1.1 M
  oci-systemd-hook                                        x86_64                  1:0.2.0-1.git05e6923.el7_6                           extras                       34 k
  oci-umount                                              x86_64                  2:2.5-3.el7                                          extras                       33 k
  policycoreutils-python                                  x86_64                  2.5-33.el7                                           base                        457 k
  python-IPy                                              noarch                  0.75-6.el7                                           base                         32 k
  python-backports                                        x86_64                  1.0-8.el7                                            base                        5.8 k
  python-backports-ssl_match_hostname                     noarch                  3.5.0.1-1.el7                                        base                         13 k
  python-ipaddress                                        noarch                  1.0.16-2.el7                                         base                         34 k
  python-pytoml                                           noarch                  0.1.14-1.git7dea353.el7                              extras                       18 k
  python-setuptools                                       noarch                  0.9.8-7.el7                                          base                        397 k
  setools-libs                                            x86_64                  3.3.8-4.el7                                          base                        620 k
  socat                                                   x86_64                  1.7.3.2-2.el7                                        base                        290 k
  subscription-manager-rhsm-certificates                  x86_64                  1.24.13-3.el7.centos                                 updates                     228 k
  yajl                                                    x86_64                  2.0.4-4.el7                                          base                         39 k
 Updating for dependencies:
  audit                                                   x86_64                  2.8.5-4.el7                                          base                        256 k
  audit-libs                                              x86_64                  2.8.5-4.el7                                          base                        102 k
  libselinux                                              x86_64                  2.5-14.1.el7                                         base                        162 k
  libselinux-python                                       x86_64                  2.5-14.1.el7                                         base                        235 k
  libselinux-utils                                        x86_64                  2.5-14.1.el7                                         base                        151 k
  libsemanage                                             x86_64                  2.5-14.el7                                           base                        151 k
  libsepol                                                x86_64                  2.5-10.el7                                           base                        297 k
  policycoreutils                                         x86_64                  2.5-33.el7                                           base                        916 k
  selinux-policy                                          noarch                  3.13.1-252.el7.1                                     updates                     492 k
  selinux-policy-targeted                                 noarch                  3.13.1-252.el7.1                                     updates                     7.0 M
 Transaction Summary
 Install  2 Packages (+35 Dependent packages)
 Upgrade             ( 10 Dependent packages)
 Total size: 93 M
 Downloading packages:
 warning: /var/cache/yum/x86_64/7/kubernetes/packages/8a0e2b605c7a616d7cb72c25c9058b2327e41d869046c7c6cb3930f10a3dc012-kubelet-1.16.3-0.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID 3e1ba8d5: NOKEY
 Retrieving key from https://packages.cloud.google.com/yum/doc/yum-key.gpg
 Importing GPG key 0xA7317B0F:
  Userid     : "Google Cloud Packages Automatic Signing Key gc-team@google.com"
  Fingerprint: d0bc 747f d8ca f711 7500 d6fa 3746 c208 a731 7b0f
  From       : https://packages.cloud.google.com/yum/doc/yum-key.gpg
 Retrieving key from https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
 Importing GPG key 0x3E1BA8D5:
  Userid     : "Google Cloud Packages RPM Signing Key gc-team@google.com"
  Fingerprint: 3749 e1ba 95a8 6ce0 5454 6ed2 f09c 394c 3e1b a8d5
  From       : https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
 Running transaction check
 Running transaction test
 Transaction test succeeded
 Running transaction
   Updating   : libsepol-2.5-10.el7.x86_64                                                                                                                          1/57
   Updating   : libselinux-2.5-14.1.el7.x86_64                                                                                                                      2/57
   Updating   : audit-libs-2.8.5-4.el7.x86_64                                                                                                                       3/57
   Updating   : libsemanage-2.5-14.el7.x86_64                                                                                                                       4/57
   Updating   : libselinux-utils-2.5-14.1.el7.x86_64                                                                                                                5/57
   Updating   : policycoreutils-2.5-33.el7.x86_64                                                                                                                   6/57
   Updating   : selinux-policy-3.13.1-252.el7.1.noarch                                                                                                              7/57
   Installing : yajl-2.0.4-4.el7.x86_64                                                                                                                             8/57
   Installing : 2:oci-umount-2.5-3.el7.x86_64                                                                                                                       9/57
   Installing : 1:oci-systemd-hook-0.2.0-1.git05e6923.el7_6.x86_64                                                                                                 10/57
   Updating   : selinux-policy-targeted-3.13.1-252.el7.1.noarch                                                                                                    11/57
   Installing : libsemanage-python-2.5-14.el7.x86_64                                                                                                               12/57
   Installing : audit-libs-python-2.8.5-4.el7.x86_64                                                                                                               13/57
   Installing : setools-libs-3.3.8-4.el7.x86_64                                                                                                                    14/57
   Updating   : libselinux-python-2.5-14.1.el7.x86_64                                                                                                              15/57
   Installing : libcgroup-0.41-21.el7.x86_64                                                                                                                       16/57
   Installing : libnetfilter_cttimeout-1.0.0-6.el7_7.1.x86_64                                                                                                      17/57
   Installing : subscription-manager-rhsm-certificates-1.24.13-3.el7.centos.x86_64                                                                                 18/57
   Installing : socat-1.7.3.2-2.el7.x86_64                                                                                                                         19/57
   Installing : python-ipaddress-1.0.16-2.el7.noarch                                                                                                               20/57
   Installing : cri-tools-1.13.0-0.x86_64                                                                                                                          21/57
   Installing : libyaml-0.1.4-11.el7_0.x86_64                                                                                                                      22/57
   Installing : PyYAML-3.10-11.el7.x86_64                                                                                                                          23/57
   Installing : python-backports-1.0-8.el7.x86_64                                                                                                                  24/57
   Installing : python-backports-ssl_match_hostname-3.5.0.1-1.el7.noarch                                                                                           25/57
   Installing : python-setuptools-0.9.8-7.el7.noarch                                                                                                               26/57
   Installing : 1:oci-register-machine-0-6.git2b44233.el7.x86_64                                                                                                   27/57
   Installing : python-pytoml-0.1.14-1.git7dea353.el7.noarch                                                                                                       28/57
   Installing : 1:atomic-registries-1.22.1-29.gitb507039.el7.x86_64                                                                                                29/57
   Installing : 1:containers-common-0.1.37-3.el7.centos.x86_64                                                                                                     30/57
   Installing : python-IPy-0.75-6.el7.noarch                                                                                                                       31/57
   Installing : checkpolicy-2.5-8.el7.x86_64                                                                                                                       32/57
   Installing : policycoreutils-python-2.5-33.el7.x86_64                                                                                                           33/57
   Installing : 2:container-selinux-2.107-3.el7.noarch                                                                                                             34/57
   Installing : libnetfilter_cthelper-1.0.0-10.el7_7.1.x86_64                                                                                                      35/57
   Installing : kubectl-1.16.3-0.x86_64                                                                                                                            36/57
   Installing : container-storage-setup-0.11.0-2.git5eaf76c.el7.noarch                                                                                             37/57
   Installing : 2:docker-common-1.13.1-103.git7f2769b.el7.centos.x86_64                                                                                            38/57
   Installing : 2:docker-client-1.13.1-103.git7f2769b.el7.centos.x86_64                                                                                            39/57
   Installing : libseccomp-2.3.1-3.el7.x86_64                                                                                                                      40/57
   Installing : libnetfilter_queue-1.0.2-2.el7_2.x86_64                                                                                                            41/57
   Installing : conntrack-tools-1.4.4-5.el7_7.2.x86_64                                                                                                             42/57
   Installing : kubernetes-cni-0.7.5-0.x86_64                                                                                                                      43/57
   Installing : kubelet-1.16.3-0.x86_64                                                                                                                            44/57
   Installing : kubeadm-1.16.3-0.x86_64                                                                                                                            45/57
   Installing : 2:docker-1.13.1-103.git7f2769b.el7.centos.x86_64                                                                                                   46/57
   Updating   : audit-2.8.5-4.el7.x86_64                                                                                                                           47/57
   Cleanup    : selinux-policy-targeted-3.13.1-192.el7.noarch                                                                                                      48/57
   Cleanup    : selinux-policy-3.13.1-192.el7.noarch                                                                                                               49/57
   Cleanup    : policycoreutils-2.5-22.el7.x86_64                                                                                                                  50/57
   Cleanup    : libsemanage-2.5-11.el7.x86_64                                                                                                                      51/57
   Cleanup    : libselinux-utils-2.5-12.el7.x86_64                                                                                                                 52/57
   Cleanup    : libselinux-python-2.5-12.el7.x86_64                                                                                                                53/57
   Cleanup    : libselinux-2.5-12.el7.x86_64                                                                                                                       54/57
   Cleanup    : audit-2.8.1-3.el7.x86_64                                                                                                                           55/57
   Cleanup    : audit-libs-2.8.1-3.el7.x86_64                                                                                                                      56/57
   Cleanup    : libsepol-2.5-8.1.el7.x86_64                                                                                                                        57/57
   Verifying  : 2:docker-common-1.13.1-103.git7f2769b.el7.centos.x86_64                                                                                             1/57
   Verifying  : 2:docker-1.13.1-103.git7f2769b.el7.centos.x86_64                                                                                                    2/57
   Verifying  : python-backports-ssl_match_hostname-3.5.0.1-1.el7.noarch                                                                                            3/57
   Verifying  : kubelet-1.16.3-0.x86_64                                                                                                                             4/57
   Verifying  : libnetfilter_queue-1.0.2-2.el7_2.x86_64                                                                                                             5/57
   Verifying  : setools-libs-3.3.8-4.el7.x86_64                                                                                                                     6/57
   Verifying  : 2:container-selinux-2.107-3.el7.noarch                                                                                                              7/57
   Verifying  : libseccomp-2.3.1-3.el7.x86_64                                                                                                                       8/57
   Verifying  : container-storage-setup-0.11.0-2.git5eaf76c.el7.noarch                                                                                              9/57
   Verifying  : kubectl-1.16.3-0.x86_64                                                                                                                            10/57
   Verifying  : 1:atomic-registries-1.22.1-29.gitb507039.el7.x86_64                                                                                                11/57
   Verifying  : python-setuptools-0.9.8-7.el7.noarch                                                                                                               12/57
   Verifying  : audit-libs-python-2.8.5-4.el7.x86_64                                                                                                               13/57
   Verifying  : libnetfilter_cthelper-1.0.0-10.el7_7.1.x86_64                                                                                                      14/57
   Verifying  : checkpolicy-2.5-8.el7.x86_64                                                                                                                       15/57
   Verifying  : python-IPy-0.75-6.el7.noarch                                                                                                                       16/57
   Verifying  : audit-libs-2.8.5-4.el7.x86_64                                                                                                                      17/57
   Verifying  : 1:containers-common-0.1.37-3.el7.centos.x86_64                                                                                                     18/57
   Verifying  : 2:oci-umount-2.5-3.el7.x86_64                                                                                                                      19/57
   Verifying  : python-pytoml-0.1.14-1.git7dea353.el7.noarch                                                                                                       20/57
   Verifying  : kubeadm-1.16.3-0.x86_64                                                                                                                            21/57
   Verifying  : policycoreutils-python-2.5-33.el7.x86_64                                                                                                           22/57
   Verifying  : audit-2.8.5-4.el7.x86_64                                                                                                                           23/57
   Verifying  : libsemanage-2.5-14.el7.x86_64                                                                                                                      24/57
   Verifying  : libsemanage-python-2.5-14.el7.x86_64                                                                                                               25/57
   Verifying  : 1:oci-systemd-hook-0.2.0-1.git05e6923.el7_6.x86_64                                                                                                 26/57
   Verifying  : selinux-policy-targeted-3.13.1-252.el7.1.noarch                                                                                                    27/57
   Verifying  : 2:docker-client-1.13.1-103.git7f2769b.el7.centos.x86_64                                                                                            28/57
   Verifying  : selinux-policy-3.13.1-252.el7.1.noarch                                                                                                             29/57
   Verifying  : libsepol-2.5-10.el7.x86_64                                                                                                                         30/57
   Verifying  : 1:oci-register-machine-0-6.git2b44233.el7.x86_64                                                                                                   31/57
   Verifying  : python-backports-1.0-8.el7.x86_64                                                                                                                  32/57
   Verifying  : yajl-2.0.4-4.el7.x86_64                                                                                                                            33/57
   Verifying  : policycoreutils-2.5-33.el7.x86_64                                                                                                                  34/57
   Verifying  : libselinux-python-2.5-14.1.el7.x86_64                                                                                                              35/57
   Verifying  : libyaml-0.1.4-11.el7_0.x86_64                                                                                                                      36/57
   Verifying  : conntrack-tools-1.4.4-5.el7_7.2.x86_64                                                                                                             37/57
   Verifying  : libselinux-utils-2.5-14.1.el7.x86_64                                                                                                               38/57
   Verifying  : cri-tools-1.13.0-0.x86_64                                                                                                                          39/57
   Verifying  : python-ipaddress-1.0.16-2.el7.noarch                                                                                                               40/57
   Verifying  : PyYAML-3.10-11.el7.x86_64                                                                                                                          41/57
   Verifying  : kubernetes-cni-0.7.5-0.x86_64                                                                                                                      42/57
   Verifying  : socat-1.7.3.2-2.el7.x86_64                                                                                                                         43/57
   Verifying  : libselinux-2.5-14.1.el7.x86_64                                                                                                                     44/57
   Verifying  : subscription-manager-rhsm-certificates-1.24.13-3.el7.centos.x86_64                                                                                 45/57
   Verifying  : libnetfilter_cttimeout-1.0.0-6.el7_7.1.x86_64                                                                                                      46/57
   Verifying  : libcgroup-0.41-21.el7.x86_64                                                                                                                       47/57
   Verifying  : libsemanage-2.5-11.el7.x86_64                                                                                                                      48/57
   Verifying  : libselinux-utils-2.5-12.el7.x86_64                                                                                                                 49/57
   Verifying  : policycoreutils-2.5-22.el7.x86_64                                                                                                                  50/57
   Verifying  : libselinux-python-2.5-12.el7.x86_64                                                                                                                51/57
   Verifying  : audit-2.8.1-3.el7.x86_64                                                                                                                           52/57
   Verifying  : selinux-policy-targeted-3.13.1-192.el7.noarch                                                                                                      53/57
   Verifying  : audit-libs-2.8.1-3.el7.x86_64                                                                                                                      54/57
   Verifying  : libsepol-2.5-8.1.el7.x86_64                                                                                                                        55/57
   Verifying  : selinux-policy-3.13.1-192.el7.noarch                                                                                                               56/57
   Verifying  : libselinux-2.5-12.el7.x86_64                                                                                                                       57/57
 Installed:
   docker.x86_64 2:1.13.1-103.git7f2769b.el7.centos                                               kubeadm.x86_64 0:1.16.3-0
 Dependency Installed:
   PyYAML.x86_64 0:3.10-11.el7                                                  atomic-registries.x86_64 1:1.22.1-29.gitb507039.el7
   audit-libs-python.x86_64 0:2.8.5-4.el7                                       checkpolicy.x86_64 0:2.5-8.el7
   conntrack-tools.x86_64 0:1.4.4-5.el7_7.2                                     container-selinux.noarch 2:2.107-3.el7
   container-storage-setup.noarch 0:0.11.0-2.git5eaf76c.el7                     containers-common.x86_64 1:0.1.37-3.el7.centos
   cri-tools.x86_64 0:1.13.0-0                                                  docker-client.x86_64 2:1.13.1-103.git7f2769b.el7.centos
   docker-common.x86_64 2:1.13.1-103.git7f2769b.el7.centos                      kubectl.x86_64 0:1.16.3-0
   kubelet.x86_64 0:1.16.3-0                                                    kubernetes-cni.x86_64 0:0.7.5-0
   libcgroup.x86_64 0:0.41-21.el7                                               libnetfilter_cthelper.x86_64 0:1.0.0-10.el7_7.1
   libnetfilter_cttimeout.x86_64 0:1.0.0-6.el7_7.1                              libnetfilter_queue.x86_64 0:1.0.2-2.el7_2
   libseccomp.x86_64 0:2.3.1-3.el7                                              libsemanage-python.x86_64 0:2.5-14.el7
   libyaml.x86_64 0:0.1.4-11.el7_0                                              oci-register-machine.x86_64 1:0-6.git2b44233.el7
   oci-systemd-hook.x86_64 1:0.2.0-1.git05e6923.el7_6                           oci-umount.x86_64 2:2.5-3.el7
   policycoreutils-python.x86_64 0:2.5-33.el7                                   python-IPy.noarch 0:0.75-6.el7
   python-backports.x86_64 0:1.0-8.el7                                          python-backports-ssl_match_hostname.noarch 0:3.5.0.1-1.el7
   python-ipaddress.noarch 0:1.0.16-2.el7                                       python-pytoml.noarch 0:0.1.14-1.git7dea353.el7
   python-setuptools.noarch 0:0.9.8-7.el7                                       setools-libs.x86_64 0:3.3.8-4.el7
   socat.x86_64 0:1.7.3.2-2.el7                                                 subscription-manager-rhsm-certificates.x86_64 0:1.24.13-3.el7.centos
   yajl.x86_64 0:2.0.4-4.el7
 Dependency Updated:
   audit.x86_64 0:2.8.5-4.el7               audit-libs.x86_64 0:2.8.5-4.el7                   libselinux.x86_64 0:2.5-14.1.el7 libselinux-python.x86_64 0:2.5-14.1.el7
   libselinux-utils.x86_64 0:2.5-14.1.el7   libsemanage.x86_64 0:2.5-14.el7                   libsepol.x86_64 0:2.5-10.el7     policycoreutils.x86_64 0:2.5-33.el7
   selinux-policy.noarch 0:3.13.1-252.el7.1 selinux-policy-targeted.noarch 0:3.13.1-252.el7.1
 Complete!
[root@urclouds-master ~]#

You can see we have successfully installed Kubeadm and Docker packages.

Now we need to be enable and start these services.

[root@urclouds-master ~]#  systemctl restart docker && systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@urclouds-master ~]# systemctl  restart kubelet && systemctl enable kubelet
Created symlink from /etc/systemd/system/multi-user.target.wants/kubelet.service to /usr/lib/systemd/system/kubelet.service.
[root@urclouds-master ~]#

If you getting these error: –

[root@urclouds-master ~]# kubeadm init
 [init] Using Kubernetes version: v1.16.3
 [preflight] Running pre-flight checks
         [WARNING Firewalld]: firewalld is active, please ensure ports [6443 10250] are open or your cluster may not function correctly
 error execution phase preflight: [preflight] Some fatal errors occurred:
         [ERROR NumCPU]: the number of available CPUs 1 is less than the required 2
         [ERROR Swap]: running with swap on is not supported. Please disable swap
[preflroot@urclouds-master ~]#

We have already open all related to port so we can ingnore ports related warning but we need to be fixe CPU error and SWAP error. I have increased the CPU from 1 to 2 in our master node VM.

We have also disabled swap partition to comments swap partition in /etc/fstab file. After that VM has been rebooted. Like below: –

[root@urclouds-master ~]# vi /etc/fstab
[root@urclouds-master ~]# cat /etc/fstab |grep swap
/dev/mapper/centos-swap swap                    swap    defaults        0 0
[root@urclouds-master ~]# reboot

After that, these error has been fixed in our master node.

Initialize Kubernetes Master node with kubeadm init

We have to run the below command to  initialize and setup kubernetes master node.

[root@urclouds-master ~]# kubeadm init
[init] Using Kubernetes version: v1.16.3
[preflight] Running pre-flight checks
         [WARNING Firewalld]: firewalld is active, please ensure ports [6443 10250] are open or your cluster may not function correctly
[preflight] Pulling images required for setting up a Kubernetes cluster
[preflight] This might take a minute or two, depending on the speed of your internet connection
[preflight] You can also perform this action in beforehand using 'kubeadm config images pull'
 [kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
[kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
[kubelet-start] Activating the kubelet service
[certs] Using certificateDir folder "/etc/kubernetes/pki"
[certs] Generating "ca" certificate and key
[certs] Generating "apiserver" certificate and key
[certs] apiserver serving cert is signed for DNS names [urclouds-master kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local] and IPs [10.96.0.1 192.168.43.132]
[certs] Generating "apiserver-kubelet-client" certificate and key
[certs] Generating "front-proxy-ca" certificate and key
[certs] Generating "front-proxy-client" certificate and key
[certs] Generating "etcd/ca" certificate and key
[certs] Generating "etcd/server" certificate and key
[certs] etcd/server serving cert is signed for DNS names [urclouds-master localhost] and IPs [192.168.43.132 127.0.0.1 ::1]
[certs] Generating "etcd/peer" certificate and key
[certs] etcd/peer serving cert is signed for DNS names [urclouds-master localhost] and IPs [192.168.43.132 127.0.0.1 ::1]
[certs] Generating "etcd/healthcheck-client" certificate and key
[certs] Generating "apiserver-etcd-client" certificate and key
[certs] Generating "sa" key and public key
[kubeconfig] Using kubeconfig folder "/etc/kubernetes"
[kubeconfig] Writing "admin.conf" kubeconfig file
[kubeconfig] Writing "kubelet.conf" kubeconfig file
[kubeconfig] Writing "controller-manager.conf" kubeconfig file
[kubeconfig] Writing "scheduler.conf" kubeconfig file
[control-plane] Using manifest folder "/etc/kubernetes/manifests"
[control-plane] Creating static Pod manifest for "kube-apiserver"
[control-plane] Creating static Pod manifest for "kube-controller-manager"
[control-plane] Creating static Pod manifest for "kube-scheduler"
[etcd] Creating static Pod manifest for local etcd in "/etc/kubernetes/manifests"
[wait-control-plane] Waiting for the kubelet to boot up the control plane as static Pods from directory "/etc/kubernetes/manifests". This can take up to 4m0s
[kubelet-check] Initial timeout of 40s passed.
[apiclient] All control plane components are healthy after 40.005169 seconds
[upload-config] Storing the configuration used in ConfigMap "kubeadm-config" in the "kube-system" Namespace
[kubelet] Creating a ConfigMap "kubelet-config-1.16" in namespace kube-system with the configuration for the kubelets in the cluster
[upload-certs] Skipping phase. Please see --upload-certs
[mark-control-plane] Marking the node urclouds-master as control-plane by adding the label "node-role.kubernetes.io/master=''"
[mark-control-plane] Marking the node urclouds-master as control-plane by adding the taints [node-role.kubernetes.io/master:NoSchedule]
[bootstrap-token] Using token: eoyfvl.6n137zip3d2k7az7
[bootstrap-token] Configuring bootstrap tokens, cluster-info ConfigMap, RBAC Roles
[bootstrap-token] configured RBAC rules to allow Node Bootstrap tokens to post CSRs in order for nodes to get long term certificate credentials
[bootstrap-token] configured RBAC rules to allow the csrapprover controller automatically approve CSRs from a Node Bootstrap Token
[bootstrap-token] configured RBAC rules to allow certificate rotation for all node client certificates in the cluster
[bootstrap-token] Creating the "cluster-info" ConfigMap in the "kube-public" namespace
[addons] Applied essential addon: CoreDNS
[addons] Applied essential addon: kube-proxy
 Your Kubernetes control-plane has initialized successfully!
 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
 You should now deploy a pod network to the cluster.
 Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
   https://kubernetes.io/docs/concepts/cluster-administration/addons/
 Then you can join any number of worker nodes by running the following on each as root:
 kubeadm join 192.168.43.132:6443 --token eoyfvl.6n137zip3d2k7az7 \
     --discovery-token-ca-cert-hash sha256:bd43903f2786f3b0729859fb31416b539ef4e631a4f12559600785c9001de548
 [root@urclouds-master ~]#

We can see in the above output that kubernetes master node has been successfully initialized. Now we must execute the below commands to use the cluster as root user.

[root@urclouds-master ~]# mkdir -p $HOME/.kube
 [root@urclouds-master ~]# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
 [root@urclouds-master ~]# chown $(id -u):$(id -g) $HOME/.kube/config
 [root@urclouds-master ~]#

Run below commands to get status of cluster and pods.

[root@urclouds-master ~]# kubectl get nodes
NAME              STATUS     ROLES    AGE   VERSION
urclouds-master   NotReady   master   12m   v1.16.3
[root@urclouds-master ~]#
[root@urclouds-master ~]# kubectl get pods --all-namespaces
NAMESPACE     NAME                                      READY   STATUS    RESTARTS   AGE
kube-system   coredns-5644d7b6d9-gdrdg                  0/1     Pending   0          13m
kube-system   coredns-5644d7b6d9-lpj4l                  0/1     Pending   0          13m
kube-system   etcd-urclouds-master                      1/1     Running   0          12m
kube-system   kube-apiserver-urclouds-master            1/1     Running   0          12m
kube-system   kube-controller-manager-urclouds-master   1/1     Running   0          12m
kube-system   kube-proxy-nsjmf                          1/1     Running   0          13m
kube-system   kube-scheduler-urclouds-master            1/1     Running   0          12m
[root@urclouds-master ~]#

Deploy pod network to the cluster

We need to be deployed the pod network so that containers of different host can communicated with each other.  POD network is the overlay network between the worker nodes. Run the below command to deploy network.

[root@urclouds-master ~]# export kubever=$(kubectl version | base64 | tr -d '\n')
[root@urclouds-master ~]# kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$kubever"
serviceaccount/weave-net created
clusterrole.rbac.authorization.k8s.io/weave-net created
clusterrolebinding.rbac.authorization.k8s.io/weave-net created
role.rbac.authorization.k8s.io/weave-net created
rolebinding.rbac.authorization.k8s.io/weave-net created
daemonset.apps/weave-net created
[root@urclouds-master ~]#

Run the below command to verify the status

[root@urclouds-master ~]# kubectl  get pods  --all-namespaces
NAMESPACE     NAME                                      READY   STATUS    RESTARTS   AGE
kube-system   coredns-5644d7b6d9-gdrdg                  1/1     Running   0          18m
kube-system   coredns-5644d7b6d9-lpj4l                  1/1     Running   0          18m
kube-system   etcd-urclouds-master                      1/1     Running   0          17m
kube-system   kube-apiserver-urclouds-master            1/1     Running   0          17m
kube-system   kube-controller-manager-urclouds-master   1/1     Running   0          17m
kube-system   kube-proxy-nsjmf                          1/1     Running   0          18m
kube-system   kube-scheduler-urclouds-master            1/1     Running   0          17m
kube-system   weave-net-gs9lm                           2/2     Running   0          69s
[root@urclouds-master ~]#

You can see here, we have successfully install kubernetes on master node.

Now we will see worker node installation step by steps.

First off all we have to set hostname and disable SELinux with below commands:-

[root@localhost ~]# hostnamectl set-hostname urclouds-node1
[root@localhost ~]# exec bash
[root@urclouds-node1 ~]# setenforce 0
[root@urclouds-node1 ~]# sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
[root@urclouds-node1 ~]# firewall-cmd --permanent --add-port=10250/tcp
 success
[root@urclouds-node1 ~]# firewall-cmd --permanent --add-port=10255/tcp
 success
[root@urclouds-node1 ~]# firewall-cmd --permanent --add-port=30000-32767/tcp
 success
[root@urclouds-node1 ~]# firewall-cmd --permanent --add-port=6783/tcp
 success
[root@urclouds-node1 ~]# firewall-cmd  --reload
 success
[root@urclouds-node1 ~]#
[root@urclouds-node1 ~]# modprobe br_netfilter
[root@urclouds-node1 ~]# echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables
[root@urclouds-node1 ~]#

After that we need to configure Kubernetes Repositories on both worker nodes as like below: –

[root@urclouds-node1 ~]# vi /etc/yum.repos.d/kubernetes.repo
[root@urclouds-node1 ~]# cat /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
[root@urclouds-node1 ~]#

Install kubeadm package and docker package on both nodes

[root@urclouds-node1 ~]# yum  install kubeadm docker -y
[root@urclouds-node2 ~]# yum  install kubeadm docker -y

After packages installation we can start and enable docker and kubelet service as below commands: –

[root@urclouds-node1 ~]# systemctl restart docker && systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@urclouds-node1 ~]#
[root@urclouds-node1 ~]# systemctl  restart kubelet && systemctl enable kubele
Created symlink from /etc/systemd/system/multi-user.target.wants/kubelet.service to /usr/lib/systemd/system/kubelet.service.
[root@urclouds-node1 ~]#

Now we can join worker nodes to master node with below commands: –

[root@urclouds-node1 ~]# kubeadm join 192.168.43.132:6443 --token eoyfvl.6n137zip3d2k7az7 --discovery-token-ca-cert-hash sha256:bd43903f2786f3b0729859fb31416b539ef4e631a4f12559600785c9001de548
[preflight] Running pre-flight checks
[preflight] Reading configuration from the cluster…
[preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -oyaml'
[kubelet-start] Downloading configuration for the kubelet from the "kubelet-config-1.16" ConfigMap in the kube-system namespace
[kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
[kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
[kubelet-start] Activating the kubelet service
[kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap…
This node has joined the cluster:
Certificate signing request was sent to apiserver and a response was received.
The Kubelet was informed of the new secure connection details. 
Run 'kubectl get nodes' on the control-plane to see this node join the cluster.
[root@urclouds-node1 ~]#

You can see in above output we have susccessfully joined the work node in master node.

Now we can verify Nodes status from master node using kubectl command like below: –

[root@urclouds-master ~]# kubectl get nodes
NAME              STATUS   ROLES    AGE     VERSION
urclouds-master   Ready    master   107m    v1.16.3
urclouds-node1    Ready       5m37s   v1.16.3
[root@urclouds-master ~]#

In above output we can see our master node and worker node is ready.

So we can install multi worker node and we can join our all worker nodes to master nodes, and we can manage all container through master node.

That’s all in this tutorial we have seen how to install Kubernetes cluster on CentOS VM.

You can also click on this link to see how to install docker on CentOS 7.

Leave a Reply