VOOZH about

URL: https://www.geeksforgeeks.org/devops/how-to-deploy-a-kubernetes-cluster-in-azure-virtual-machines/

⇱ How to Deploy a Kubernetes Cluster in Azure Virtual Machines? - GeeksforGeeks


  • Courses
  • Tutorials
  • Interview Prep

How to Deploy a Kubernetes Cluster in Azure Virtual Machines?

Last Updated : 23 Jul, 2025

Azure Kubernetes Service provides a platform for managing containers with the help of Kubernetes. It also provides an easy and managed way for the deployment and scaling of containerized applications. Containerized applications are deployed in the Kubernetes cluster in Azure. But we can also manually set up a Kubernetes cluster in Azure. Let's see how to deploy a Kubernetes cluster on Azure VMs.

Primary Terminologies

  • Kubernetes: It is an open-source container orchestration platform designed to automate the deployment, scaling, and management of containerized applications.
  • Kubernetes Cluster: It is a set of nodes on which containerized applications run.

Deploy Kubernetes Cluster in Azure VM

Step 1: Deploy Azure VM

  • Go to the Azure portal and create a minimum of 2 virtual machines, as described in this article. Create VMs with a minimum configuration of 2 vCPUs and 8 GB RAM.
  • Recommend you use Ubuntu as OS.
  • One VM will act as a master node for our cluster while others will act as worker nodes.
  • Once all VMs are deployed start with the following steps.
  • Follow Step 2 to Step 5 for all the VMs.

Step 2: Disable the firewall for VM

  • SSH to the VM using the below command
ssh username@public-ip

👁 SSH

  • As we will be starting Kubernetes API server the firewall may interfare with our output. Hence disable the firewall using below command.
sudo ufw disable

👁 Firewall

  • Then disable swapping for swapping devices using below commands.
swapoff -a
sudo sed -i '/swap/d' /etc/fstab

👁 Swap Disable

  • Now we will add following parameters in kernel parameters. Run below command.
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF

👁 Parameters

  • Apply the new system configuration using below command.
sudo sysctl --system

👁 System

Step 3: Install the certificate applications.

  • Install the below applications with the help of below command.
sudo apt install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common

Step 4: Install Docker

  • Now lets install docker as root user . first switch to root user
sudo su

👁 Docker

  • Add docker to apt list
curl -fsSL https://download.docker.com/linux/ubuntu//gpg | apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu/ $(lsb_release -cs) stable"

👁 Docker

  • Update the apt
apt update

👁 Update

  • Finally install docker
apt install docker.io

👁 Docker Installed

Step 5: Install Kubernetes

  • Being as root add kubernetes to apt list
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
echo "deb https://kubernetes.io/blog/2023/08/31/legacy-package-repository-deprecation/ kubernetes-xenial main" > /etc/apt/sources.list.d/kubernetes.list

👁 Kubernetes

👁 Kubernetes

  • Update the apt
apt update

👁 Update

  • Finally install kubelet , kubeadm & kubectl
apt-get install -y kubelet kubeadm kubectl

👁 Install

Step 6: Initialize cluster and kubeadm (Only for master node)

  • First get the Ip address of your machine.
ip addr

👁 IP

  • From output copy address for eth0 interface.
  • Initiate Kubeadm and start the cluster. Replace your IP address in command .
kubeadm init --apiserver-advertise-address=<apiserver-advertise-address-ip> --pod-network-cidr=192.168.0.0/16 --ignore-preflight-errors=all 

👁 Kubeadm init

👁 Kubernetes Master

  • This will start the Kubernetes api server . Copy the kubeadm join command from output which required in next steps .Finally add config files
export KUBECONFIG=/etc/kubernetes/admin.conf
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

👁 Kube Config

  • Now we are done with the configuration of master node . We just have to install container networking in cluster. Logout from root and then run below command
kubectl apply -f "https://release-assets.githubusercontent.com/github-production-release-asset/23059575/3abef380-5f05-11eb-85be-eeed50486adb?sp=r&sv=2018-11-09&sr=b&spr=https&se=2025-07-23T12%3A33%3A24Z&rscd=attachment%3B+filename%3Dweave-daemonset-k8s-1.11.yaml&rsct=application%2Foctet-stream&skoid=96c2d410-5711-43a1-aedd-ab1947aa7ab0&sktid=398a6654-997b-47e9-b12b-9515b896b4de&skt=2025-07-23T11%3A32%3A41Z&ske=2025-07-23T12%3A33%3A24Z&sks=b&skv=2018-11-09&sig=qgBhWdrEuZ%2Fp8G40fAjFWvnCAYGEWBFDWRtwlF4OeME%3D&jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmVsZWFzZS1hc3NldHMuZ2l0aHVidXNlcmNvbnRlbnQuY29tIiwia2V5Ijoia2V5MSIsImV4cCI6MTc1MzI3MDk4NiwibmJmIjoxNzUzMjcwNjg2LCJwYXRoIjoicmVsZWFzZWFzc2V0cHJvZHVjdGlvbi5ibG9iLmNvcmUud2luZG93cy5uZXQifQ.xOxaHHwNEsHssj6Xvayb29FRQNCiqY26JLQ0lGoaVeI&response-content-disposition=attachment%3B%20filename%3Dweave-daemonset-k8s-1.11.yaml&response-content-type=application%2Foctet-stream"

👁 Network

Step 7: Connect The worker node.

  • On worker node after following step 2 to 5 paste the kubeadm command copied from master node.
  • You should see that worker node is joined.

Step 8: Verify the cluster.

  • On master node run Kubernetes commands to list all components.
kubectl get all -A

👁 List Services

Conclusion

Thus we have seen how we can install a Kubernetes cluster manually on Azure Virtual machines . This allows to build kubernetes cluster from scratch allowing to manage each component of Kubernetes separately. This can be furthur modified for complex configurations.

Comment