When I first setup my Kubernetes (k8s) cluster in my homelab, it was a big undertaking and an arduous learning experience. It's been running solidly for months, but I recently tried upgrading a bit too bleeding edge, and it stopped working. After some unsuccessful attempts at recovery, I decided to rebuild the entire cluster.

Since I will be setting up a new cluster, I thought I would write this blog series to document each step so that anyone interested in learning k8s will be able to get a working environment. I will be covering creating the virtual machines, installing k8s, creating the cluster, joining nodes to the cluster, installing Helm, setting up persistent storage, configuring networking, adding an Ingress Controller, and deploying applications.

Before you get started, you will want to familiarize yourself with some fundamental Kubernetes concepts. I will explain some topics in more detail as we go throughout the series, but it would be helpful to have a basic understanding to start. I recommend this great "Kubernetes 101" article to start learning the terminology and architecture.

This series assumes working knowledge of server concepts, Linux commands, and a suitable VM hypervisor. I'll be using VMWare ESXi, which is an enterprise hypervisor available for free with some limitations.

So, let's get started with creating the virtual machines.