· via dev.to (home feed)
Updated 2024 'Kubernetes the Hard Way' guide builds a full cluster by hand on VirtualBox
Murat Cabuk has condensed his 17-part 'Setting Up Kubernetes the Hard Way' series into a single updated guide that builds a Kubernetes 1.30 cluster manually on Vagrant and VirtualBox.

Murat Cabuk has republished his "Setting Up Kubernetes the Hard Way" tutorial on dev.to as a single consolidated article, updating a 17-part series he wrote roughly two years earlier. The new version follows Kelsey Hightower's influential "Kubernetes The Hard Way" walkthrough closely, but targets x64 hardware rather than the bare-metal ARM64 machine Hightower adopted in his latest revision.
From 17 articles to one
According to the author, the original series covered the same ground in far more depth, with lab environments built four different ways: LXD, KVM, Vagrant-Libvirt and Vagrant-VirtualBox. He considers the older material still worth reading for many topics, and the new article links back to those pages where the extra detail matters. The 2024 refresh narrows the scope to a single lab environment, Vagrant with VirtualBox, so a reader can move from an empty machine to a running cluster in one continuous read, with troubleshooting notes added along the way.
What gets installed
The premise of "the hard way," as Hightower defined it, is assembling the control plane and worker components manually, without kubeadm, Ansible, RKE or any other deployment tool. Hightower's original guide ran on Google Cloud before moving to ARM64.
Cabuk's version pins a current set of components: Kubernetes 1.30.3 for kubectl, the API server, controller manager, scheduler, kube-proxy and kubelet; containerd 1.7.20 as the CRI-compatible runtime with runc 1.1.13 underneath; crictl 1.30.1 for debugging pods and containers without going through the Kubernetes API; and etcd 3.5.15 as the cluster's state store. For each component, the guide walks through generating certificates and kubeconfig files, writing service units and starting the services. The point, as Cabuk frames it, is that bringing up what looks like one system actually requires standing up many TLS-secured services by hand.
The lab environment
The cluster runs on four Ubuntu 22.04 virtual machines provisioned by a Vagrantfile: a bastion host at 192.168.56.31 used for installation and administration, one master node at 192.168.56.41, and two worker nodes at 192.168.56.51 and 192.168.56.52. Each machine gets two CPUs, 2 GB of RAM and a 10 GB disk, keeping the lab within reach of an ordinary laptop. Cabuk notes that no deep Vagrant knowledge is required — installing Vagrant and VirtualBox and running vagrant up is enough to bring the topology online.
Prerequisites the scripts handle
Shell scripts embedded in the Vagrantfile prepare the machines automatically: enabling passwordless root SSH between them, disabling swap, installing and synchronising NTP, and adding helper packages such as socat, conntrack and ipset. The firewall is left off inside the lab subnet for simplicity, though the author points readers to the official Kubernetes documentation for the ports a real deployment would need to open. He also includes production-oriented advice, such as preferring DNS names over bare hostnames in larger data centres and blocking the pod and service subnets at the network level, while acknowledging that a production environment demands far more than the lab covers.
Why it matters
Most engineers now meet Kubernetes through managed services like GKE, EKS or AKS, or through kubeadm, where certificates, etcd and kubeconfig files are generated out of sight. That convenience becomes a liability when something breaks below the API layer. Guides like this one, and the Hightower original they descend from, remain among the fastest ways to understand how the pieces actually connect, and the material maps closely to what certification exams such as the CKA test. The format matters too: long tutorial series tend to drift out of date across many pages, while a single refreshed article with pinned versions gives learners one current, linear path to follow.
- #kubernetes
- #cloud
- #containers
- #devops
- #virtualbox