This article talks about how to install Kubernetes 1.27 on Ubuntu VM but the same also can be followed for other Linux distributions. Some of the OS-specific commands can be different for the other Linux distribution like RHEL.
Here is a step-by-step detailed process to install Kubernetes 1.27 with Kubeadm on Ubuntu 20.04. or higher. Please note that the process might be slightly different depending on your Linux distribution.
Step 1: Prepare the Environment
Update your system packages:
sudo apt-get update
sudo apt-get upgrade -y
Install required packages:
sudo apt-gt install -y apt-transport-https ca-certificates curl
Disable swap:
sudo swapoff -a
To make this change permanent, edit /etc/fstab and comment out the swap line:
sudo nano /etc/fstab
Find the line that looks like this:
UUID=xxxx-xxxx-xxxx-xxxx none swap sw 0 0
And comment it out by adding a # at the beginning of the line:
# UUID=xxxx-xxxx-xxxx-xxxx none swap sw 0 0
Save and exit the file.
You can also check: How to Disable Swap
Step 2: Install Container Engine
Add required environment variables:
export OS_VERSION_ID=xUbuntu_$(cat /etc/os-release | grep VERSION_ID | awk -F"=" '{print $2}' | tr -d '"')
export CRIO_VERSION=1.25
Add repository:
echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS_VERSION_ID/ /"|sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list
echo "deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/$CRIO_VERSION/$OS_VERSION_ID/ /"|sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable:cri-o:$CRIO_VERSION.list
curl -L https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:$CRIO_VERSION/$OS_VERSION_ID/Release.key | sudo apt-key --keyring /etc/apt/trusted.gpg.d/libcontainers.gpg add -
curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS_VERSION_ID/Release.key | sudo apt-key --keyring /etc/apt/trusted.gpg.d/libcontainers.gpg add -
Update package index and install Cri-o:
sudo apt-get update
sudo apt-get install cri-o cri-o-runc cri-tools -y
Enable and start Cri-o:
sudo systemctl daemon-reload
sudo systemctl enable crio --now
Step 3: Install Kubernetes Components (kubeadm, kubelet, kubectl)
Add Kubernetes repository:
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
Update package index and install Kubernetes components:
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
Hold these packages to prevent unintentional updates:
sudo apt-mark hold kubelet kubeadm kubectl
Step 4: Initialize the Kubernetes Control-Plane Node
Run the following command on the control-plane node:
sudo kubeadm init --pod-network-cidr=192.168.0.0/16 --kubernetes-version 1.27.0
Take note of the Kubeadm join command with the token and hash that is displayed at the end of the output.
Configure Kubectl for the current user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Step 5: Set Up a Pod Network
In this example, we’ll use Calico as the pod network. You can choose another one if you prefer.
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
Step 6: Join Worker Nodes in the Cluster
On each worker node, run the Kubeadm join command that was displayed at the end of the Kubeadm init output on the control-plane node. The command should look similar to this:
sudo kubeadm join <control-plane-ip>:<control-plane-port> --token <token> --discovery-token-ca-cert-hash <hash>
Replace control-plane-ip, control-plane-port, token, and hash with the actual values from your Kubeadm init output.
Step 7: Verify the Cluster
On the control-plane node, check the status of your nodes by running:
kubectl get nodes
Initially, the worker nodes may show a NotReady status. After a few moments, they should transition to the Ready state, indicating that they are part of the cluster and functioning properly.
Step 8: Deploy a Sample Application (Optional)
To test your Kubernetes cluster, you can deploy a sample application. In this example, we’ll deploy a simple Nginx deployment:
Create an Nginx deployment:
kubectl create deployment nginx --image=nginx
Expose the Nginx deployment as a service:
kubectl expose deployment nginx --port=80 --type=LoadBalancer
Check the status of the deployed resources:
kubectl get deployments
kubectl get services
You should see the Nginx deployment and service listed. The service should show an external IP after a few moments, which you can use to access the Nginx application.
That’s it! You now have a working Kubernetes 1.27 cluster set up using Kubeadm.
These steps provide an overview of setting up Kubernetes 1.27 with Kubeadm. For more detailed instructions and troubleshooting tips, refer to the official Kubernetes documentation: https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/
Follow us on LinkedIn for updates!
2 thoughts on “How to Install Kubernetes 1.27”
I got error after command: sudo kubeadm init –pod-network-cidr=192.168.0.0/16 –kubernetes-version 1.27.0
Please share the error.