Kubernetes Cluster On Premise with CentOS7/Redhat (On VM)

Watchara Ph
devopsthailand
Published in
2 min readOct 19, 2018

POC Environment
k8smaster 192.168.60.100
k8snode1 192.168.60.101
k8snode2 192.168.60.102

Prerequisites
1. Create VM 2–3 Node and Install CentOS7
2. Master Node require CPUs 2 Memory 4GB.
3. Nodes require CPUs 1/2 Memory 1/2 GB.

Preparation OS for Kubernetes all nodes

$ yum -y update
$ yum -y install net-tools wget telnet yum-utils device-mapper-persistent-data lvm2
$ yum-config-manager — add-repo https://download.docker.com/linux/centos/docker-ce.repo
$ yum install -y — setopt=obsoletes=0 docker-ce-17.03.1.ce-1.el7.centos docker-ce-selinux-17.03.1.ce-1.el7.centos
$ systemctl enable docker && systemctl start docker
$ swapoff -a
$ vi /etc/fstab”
"comment in line “/dev/mapper/centos-swap swap swap defaults 0 0"
$ modprobe br_netfilter
$ setenforce 0
$ sed -i — follow-symlinks ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/sysconfig/selinux
$ bash -c ‘echo “net.bridge.bridge-nf-call-ip6tables = 1” > /etc/sysctl.d/k8s.conf’
$ bash -c ‘echo “net.bridge.bridge-nf-call-iptables = 1” >> /etc/sysctl.d/k8s.conf’

Open firewall

firewall-cmd — permanent — add-port=6443/tcp
firewall-cmd — permanent — add-port=2379–2380/tcp
firewall-cmd — permanent — add-port=10250/tcp
firewall-cmd — permanent — add-port=10251/tcp
firewall-cmd — permanent — add-port=10252/tcp
firewall-cmd — permanent — add-port=10255/tcp

Create new file Kubernetes Repo “vi /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

$ yum install -y kubelet kubeadm kubectl
$ systemctl enable kubelet

restart all servers “init 6”

Setup Kubernetes on Cluster Mode
@Master Node

$ kubeadm init — apiserver-advertise-address=192.168.60.100 — pod-network-cidr=192.168.60.0/16
$ mkdir -p $HOME/.kube
$ cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ chown $(id -u):$(id -g) $HOME/.kube/config
$ kubectl apply -f “https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d ‘\n’)”

@Node Join Cluster

$ kubeadm join 192.168.60.100:6443 — token yn8psk.z2h7sqg2rtw5mquz — discovery-token-ca-cert-hash sha256:2c4fc54c3036ed5722f5458c9eb03287d6264b3c3f9fb92e5dbe1c9feb2dd045

Verify

  • Node Status Completed
  • Cluster Status Completed

--

--