Prerequisite

disable selinux
disable & stop firewalld
disable swap

Sysctl and Modules

create new file /etc/sysctl.d/kubernetes.conf and add lines below to the file.

net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1

create new file /etc/modules-load.d/kubernetes.conf add line below to the file.

br_netfilter

reload sysctl :

# sysctl –system

Kubelet, kubeadm and kubectl

Install Kubelet, kubeadm and kubectl on all nodes.

Add the Google repository.

cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
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
exclude=kubelet kubeadm kubectl
EOF

Install latest version of kubelet, kubeadm and kubectl.

yum install -y kubelet kubeadm kubectl –disableexcludes=kubernetes

If need spesific version of kubelet, kubeadm and kubectl. Check available kubernetes version by below command.

yum -v list kubelet –show-duplicates –disableexcludes=kubernetes

Install spesific version of kubelet, kubeadm and kubectl.

yum install kubelet-1.21.4-0 kubeadm-1.21.4-0 kubectl-1.21.4-0 –disableexcludes=kubernetes

Start and enable kubelet service

systemctl enable –now kubelet

Container runtime

Install container runtime on all nodes. (Docker/CRI-O/Containerd)

Docker.

Uninstall old versions if exist.

yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

Add docker repository.

yum install -y yum-utils
yum-config-manager –add-repo https://download.docker.com/linux/centos/docker-ce.repo

Install docker engine.

yum install docker-ce docker-ce-cli containerd.io

Start and enable docker service.

systemctl enable –now docker

Init kubernetes master node

  • for single master node.

kubeadm init –pod-network-cidr 192.168.0.0/16

  • for multi master node, init from one of master.

kubeadm init –control-plane-endpoint “loadbalancer-ip-masters:6443” –upload-certs –pod-network-cidr 192.168.0.0/16

notes: for multi master, load balancer is needed for load balance the master nodes.

Join another master (multi master) or worker.

join another master to cluster.

kubeadm join loadbalancer-ip-masters:6443 –token [token] –discovery-token-ca-cert-hash [token] –control-plane –certificate-key [key]

join worker to cluster, get output from this command from master node.

kubeadm token create –print-join-command

  • join worker for single master.

kubeadm join ip-master:6443 –token [token] –discovery-token-ca-cert-hash [token]

  • join worker for multi master.

kubeadm join loadbalancer-ip-master:6443 –token [token] –discovery-token-ca-cert-hash [token]

CNI (Choose one)

  • Calico typha

kubectl apply -f https://docs.projectcalico.org/manifests/calico-typha.yaml

  • Flannel

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

Nginx Ingress

Install nginx ingress

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.48.1/deploy/static/provider/baremetal/deploy.yaml

ref: https://kubernetes.github.io/ingress-nginx/deploy/#bare-metal

By admin

Leave a Reply

Your email address will not be published. Required fields are marked *