Follow this documentation to set up a Kubernetes cluster on CentOS 7 Virtual machines. This documentation guides you in setting up a cluster with one master node and one worker node.
Assumptions
Role | FQDN | IP | OS | RAM | CPU |
---|---|---|---|---|---|
Master | kmaster.example.com | 172.42.42.100 | CentOS 7 | 2G | 2 |
Worker | kworker.example.com | 172.42.42.101 | CentOS 7 | 1G | 1 |
Perform all the commands as root user unless otherwise specified
So that we can talk to each of the nodes in the cluster
cat >>/etc/hosts<<EOF
172.42.42.100 kmaster.example.com kmaster
172.42.42.101 kworker.example.com kworker
EOF
Use the Docker repository to install docker.
If you use docker from CentOS OS repository, the docker version might be old to work with Kubernetes v1.13.0 and above
yum install -y -q yum-utils device-mapper-persistent-data lvm2 > /dev/null 2>&1
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo > /dev/null 2>&1
yum install -y -q docker-ce >/dev/null 2>&1
systemctl enable docker
systemctl start docker
setenforce 0
sed -i --follow-symlinks 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/sysconfig/selinux
systemctl disable firewalld
systemctl stop firewalld
sed -i '/swap/d' /etc/fstab
swapoff -a
cat >>/etc/sysctl.d/kubernetes.conf<<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
cat >>/etc/yum.repos.d/kubernetes.repo<<EOF
[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
EOF
yum install -y kubeadm kubelet kubectl
systemctl enable kubelet
systemctl start kubelet
kubeadm init --apiserver-advertise-address=172.42.42.100 --pod-network-cidr=192.168.0.0/16
To be able to use kubectl command to connect and interact with the cluster, the user needs kube config file.
In my case, the user account is venkatn
mkdir /home/venkatn/.kube
cp /etc/kubernetes/admin.conf /home/venkatn/.kube/config
chown -R venkatn:venkatn /home/venkatn/.kube
This has to be done as the user in the above step (in my case it is venkatn)
kubectl create -f https://docs.projectcalico.org/v3.11/manifests/calico.yaml
kubeadm token create --print-join-command
Use the output from kubeadm token create command in previous step from the master server and run here.
kubectl get nodes
kubectl get cs
Have Fun!!