Install Kubernetes
Step 1: Update and Upgrade Ubuntu (all nodes)
Begin by ensuring that your system is up to date. Open a terminal and execute
the following commands:
sudo apt update && apt upgrade -y
Step 2: Disable Swap (all nodes)
To enhance Kubernetes performance, disable swap and set essential kernel
parameters. Run the following commands on all nodes to disable all swaps:
sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
Step 3: Add Kernel Parameters (all nodes)
Load the required kernel modules on all nodes:
sudo tee /etc/modules-load.d/containerd.conf <<EOF
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter
Configure the critical kernel parameters for Kubernetes using the following:
sudo tee /etc/sysctl.d/kubernetes.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
Then, reload the changes:
Install Kubernetes 1
sudo sysctl --system
Step 4: Install Containerd Runtime (all nodes)
We are using the containerd runtime. Install containerd and its dependencies
with the following commands:
sudo apt install -y curl gnupg2 software-properties-common apt-transport-https ca-
certificates
Enable the Docker repository:
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --
dearmour -o /etc/apt/trusted.gpg.d/docker.gpg
sudo add-apt-repository "deb [arch=amd64]
https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
Update the package list and install containerd:
sudo apt update
sudo apt install -y containerd.io
Configure containerd to start using systemd as cgroup:
containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1
sudo sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g'
/etc/containerd/config.toml
Restart and enable the containerd service:
sudo systemctl restart containerd
sudo systemctl enable containerd
Step 5: Add Apt Repository for Kubernetes (all nodes)
Kubernetes packages are not available in the default Ubuntu 22.04 repositories.
Add the Kubernetes repositories with the following commands:
Install Kubernetes 2
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --
dearmour -o /etc/apt/trusted.gpg.d/kubernetes-xenial.gpg
sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"
Step 6: Install Kubectl, Kubeadm, and Kubelet (all nodes)
After adding the repositories, install essential Kubernetes components,
including kubectl, kubelet, and kubeadm, on all nodes with the following
commands:
sudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
Step 7: Initialize Kubernetes Cluster with Kubeadm (master node)
With all the prerequisites in place, initialize the Kubernetes cluster on the master
node using the following Kubeadm command:
sudo kubeadm init —apiserver-advertise-address 192.168.10.100 —pod-network-
cidr 10.244.0.0/16
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
Alternatively, if you are the root user, you can run:
export KUBECONFIG=/etc/kubernetes/admin.conf
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/
Example(Flannel): kubectl apply -f https://github.com/flannel-
io/flannel/releases/latest/download/kube-flannel.yml
Install Kubernetes 3
Then you can join any number of worker nodes by running the following on each
as root:
kubeadm join 146.190.135.86:6443 --token f1h95l.u4nkex9cw8d0g63w \
--discovery-token-ca-cert-hash
sha256:6d15f2a79bdb38d1666af50c85f060b9fadc73f13c932e0e2a9eeef08f51f91a
After the initialization is complete make a note of the kubeadm join command for
future reference.
Run the following commands on the master node:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Next, use kubectl commands to check the cluster and node status:
kubectl get nodes
Step 8: Add Worker Nodes to the Cluster (worker nodes)
On each worker node, use the kubeadm join command you noted down earlier:
kubeadm join 146.190.135.86:6443 --token f1h95l.u4nkex9cw8d0g63w --
discovery-token-ca-cert-hash
sha256:6d15f2a79bdb38d1666af50c85f060b9fadc73f13c932e0e2a9eeef08f51f91a
Step :9 Install Kubernetes Network Plugin (master node)
To enable communication between pods in the cluster, you need a network
plugin. Install the Calico network plugin with the following command from the
master node:
kubectl apply -f
https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/calico.yaml
Step 10: Verify the cluster and test (master node)
Install Kubernetes 4
Finally, we want to verify whether our cluster is successfully created.
kubectl get pods -n kube-system
kubectl get nodes
Step 11: Deploy test application on cluster (master node)
kubectl run nginx --image=nginx
Install Kubernetes 5