Homelab Upgrade Part 1: The Upgrade Plan and Why I Homelab

It's Upgrade time

I've had some sort of "Homelab" for the past 10 years. It's taken on many iterations, but I wanted to write this series on my latest major upgrade, the move to Kubernetes. In this first post, we'll detail what my Homelab was, what it's been upgraded to, and what I use my Homelab for.

Why I Homelab

It all started with a Synology NAS. I read an article about someone using a NAS to host their ROMs for their emulators and then they could access them from any device on their network. I thought this was the coolest thing ever as I was prime in my emulation phase, and believed spending $300 as a broke college kid for a NAS and another $100 on drives was a smart decision. Little did I know, it would teach me nearly everything I needed to get me to where I am today.

That Synology NAS was my first introduction to a Linux shell. The more I messed around with it, the more I learned how to navigate a command line. I had to learn how to access my NAS and its services externally, which taught me more about networking. It taught me about containerization as Synology gained support for Docker. This little NAS turned from ROM storage to a Media Server for me and my roommates, affectionately dubbed "the science machine". I've continued working on this lab over the years, always learning more, and using it today to test ideas and learn new things.

My old Infrastructure

I'm going to use this series to primarily go over my latest upgrade from a single host serving all of my applications with Docker, to a new k3s cluster using Intel's NUCs as my nodes.

The main details of the old Node are here:

PartModel
ProcessorIntel i5-12600K
RAM128GB DDR4
Storage5x14TB in Raidz1

This machine ran Docker and ran all of my services like my Plex server as containers. I figured it was time to upgrade to a real-deal home Kubernetes cluster, and started to plan out the upgrade.

The Upgrade

I settled on using the Intel NUCs as the main compute nodes for my new Cluster. Their small footprint, power efficiency, and compute power made the choice a no-brainer. I'll use three of the NUCs to set up a Highly Available control plane, and then three more NUCs as my worker nodes to distribute my container workloads. The old docker host would be transitioned into a TrueNas server, and utilized as NFS storage for the cluster.

I wanted to bring the coolest stuff I get to use professionally, into my lab as well, so we're doing it all with GitOps and ArgoCD! Feel free to check out the repository backing this project up on my Github here.

What to Come

Over the next few weeks I'm going to do posts diving deeper into the following parts of my upgrade process:

  • The Hardware Upgrades

  • Networking

  • k3s Installation with Ansible

  • Storage for the Cluster

  • Next steps and future thoughts

Follow along to see how it all turned out, from the good and the bad, to all the snags and solutions workout along the way. Hopefully you'll learn something new about Kubernetes, self-hosting your own services, and homelabbing!