1. Install Ubuntu 20.04
2. Run the following using sudo privileges:
disable swap or Kubernetes will NOT work
sudo swapoff -a sudo rm /swap.img sed "-i.bak" '/swap.img/d' /etc/fstab
3. Disable firewalling within Linux
systemctl disable --now ufw
4. Install Docker
sudo apt-get install docker.io
5. Enable Docker
sudo systemctl enable docker
6 . Check Docker status
sudo systemctl status docker
7. Add Kubernetes keys signing
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add
8. Add Kubernetes repository
sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"
9. Install kubeadm, kubelet and kubectl
apt install -y kubeadm=1.22.0-00 kubelet=1.22.0-00 kubectl=1.22.0-00
10. Ensure Kubernetes cannot be auto-updated
sudo apt-mark hold kubeadm kubelet kubectl
11. Change cgroup driver for docker
sudo cat <<EOF | sudo tee /etc/docker/daemon.json
{ "exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts":
{ "max-size": "100m" },
"storage-driver": "overlay2"
}
EOF
12. Restart Docker
sudo systemctl restart docker
13. Check Docker is using recommended cgroup by running
sudo docker info |grep -i cgroup
the result should be
Cgroup Driver: systemd Cgroup Version: 1
14. Initialize the Kubernetes master, control-plane
kubeadm init --apiserver-advertise-address=192.168.1.6 --pod-network-cidr=10.244.0.0/16
15. Copy kube config file to /root/.kube directory
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
16. Install Flannel overlay network
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
17. Untaint master node that is running Pods. This is not allowed unless the command below is run
kubectl taint nodes --all node-role.kubernetes.io/master-