Following Kelsey Hightower's Kubernetes the Hard Way, but on my own Proxmox homelab. These are my notes on what I did and what's different from the original guide.
Why I'm doing this
As a DevOps engineer, I wanted to actually understand Kubernetes instead of just knowing the commands. My real question going in was: why do we even need Kubernetes? If containers already package and run our apps, isn't that enough?
My first attempt was to just spin up a cluster with AI/scripts doing most of the work. I provisioned a 1+2 node k3s cluster on this same Proxmox homelab:
-
k3supandkubectlinstalled on a WSL workstation - k3s control plane running on
k3s-cp - Both worker nodes joined and healthy
- Cilium CNI v1.19.3 installed, all 3 nodes Ready
- kubeconfig merged and working on the WSL workstation
It worked. But I didn't understand jack of what I built. So I scrapped that and started over with Kubernetes the Hard Way instead, building each piece by hand.
Environment
| Host | Role | OS | Memory |
|---|---|---|---|
UbuntuDesktop-Sandbox1 |
Jumpbox | Ubuntu 22.04 LTS (Jammy) | 16GB |
k8s-solo |
Controller | Ubuntu Server 22.04.5 LTS | 4 GB |
k8s-solo-w1 |
Worker 1 | Ubuntu Server 22.04.5 LTS | 2 GB |
k8s-solo-w2 |
Worker 2 | Ubuntu Server 22.04.5 LTS | 2 GB |
All VMs run on Proxmox. The jumpbox is an existing Ubuntu sandbox VM I already had, repurposed for this project. Static IPs and hostnames are set for all four VMs, and SSH keys are already set up from the jumpbox to all three nodes.
Topology is 1 controller + 2 workers.
01 - Prerequisites
kubectl is installed on the jumpbox:
root@luger-VirtualBox:~/kubernetes-the-hard-way/downloads# kubectl version --client
Client Version: v1.32.3
Kustomize Version: v5.5.0
02 - Jumpbox
Repo cloned to:
root@luger-VirtualBox:~/kubernetes-the-hard-way# pwd
/root/kubernetes-the-hard-way
Binaries downloaded into downloads/:
root@luger-VirtualBox:~/kubernetes-the-hard-way/downloads# ls -ltr
total 16
drwxr-xr-x 2 root root 4096 Jan 7 2025 cni-plugins
drwxr-xr-x 2 root root 4096 Sep 7 03:59 controller
drwxr-xr-x 2 root root 4096 Sep 7 03:59 client
drwxr-xr-x 2 root root 4096 Sep 7 03:59 worker
SSH from the jumpbox to k8s-solo, k8s-solo-w1, and k8s-solo-w2 is already working with key-based auth, no passwords.
Top comments (0)