Kubernetes has become the standard for container orchestration, but setting up a production-ready cluster can be intimidating. This comprehensive guide walks you through deploying a production-grade Kubernetes cluster on Vultr—from initial server provisioning to a fully operational cluster ready for your workloads.
Vultr offers an compelling infrastructure for Kubernetes deployments in 2026:
Before we begin, ensure you have:
For a production cluster, you'll need at least 3 nodes for high availability. For this guide, we'll create a 3-node cluster using Vultr's high-performance instances.
# Using Vultr CLI
vultr-cli instance create \
--region="nyc" \
--plan="vhp-4c-8gb" \
--os="Ubuntu 22.04 LTS" \
--label="k8s-control-01"
# Create 3 worker nodes
for i in 01 02 03; do
vultr-cli instance create \
--region="nyc" \
--plan="vhp-4c-8gb" \
--os="Ubuntu 22.04 LTS" \
--label="k8s-worker-$i"
done
With your servers provisioned, let's install the Kubernetes components on each node.
# SSH into each node and run
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget apt-transport-https ca-certificates gnupg lsb-release
# Install containerd runtime
sudo modprobe overlay
sudo modprobe br_netfilter
cat <
# Add Kubernetes repository
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
Now let's initialize the Kubernetes control plane on your first node.
# On control plane node only
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
# Save the join command shown in output
# You'll need this for worker nodes
After initialization, configure kubectl for your user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
For pod networking, we'll use Flannel, a simple and effective CNI:
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
Verify the installation:
kubectl get pods -n kube-system
# Should show kube-flannel-ds-* running on all nodes
Use the join command from Step 3 on each worker node:
# On each worker node
sudo kubeadm join <CONTROL_PLANE_IP>:6443 \
--token <YOUR_TOKEN> \
--discovery-token-ca-cert-hash sha256:<YOUR_HASH>
Verify all nodes are ready:
kubectl get nodes
# Should show all nodes in Ready state
Let's verify our cluster works by deploying a sample Nginx application:
# Create deployment
kubectl create deployment nginx --image=nginx:latest
# Scale to 3 replicas
kubectl scale deployment nginx --replicas=3
# Expose via LoadBalancer
kubectl expose deployment nginx --port=80 --type=LoadBalancer
# Check status
kubectl get all
For production Kubernetes deployments on Vultr, consider these best practices:
If managing your own cluster feels overwhelming, Vultr offers Managed Kubernetes that handles:
Start your Kubernetes journey on Vultr with $100 free credit. Whether you choose self-managed or managed Kubernetes, Vultr's global infrastructure provides the performance and reliability you need.
Get Started with Vultr Learn About CloudbetYou've successfully deployed a production-ready Kubernetes cluster on Vultr! From here, you can:
Kubernetes empowers you to deploy, scale, and manage containerized applications efficiently. Combined with Vultr's high-performance infrastructure, you have a powerful platform for modern application deployment.
🎯 Recommended Betting Platforms