Homelab: Proxmox or Kubernetes?
TLDR: I will use both tools to combine virtualization and containers.
As I have been restarting my homelab project, I have a lot of choices to make. I will try to document them here, as it might be useful for some, and definitely useful for future me (hello, future me!).
Last iteration, I wanted to have few beefy and well isolated applications, so Proxmox was the ideal choice on just one machine. Now the goal is slightly different. I mostly want a place to self host many smaller tools and websites, and I want to use that as a place to practice my devops knowledge.
For traditional homelab use, kubernetes is overkill. I would still recommend docker to anyone wanting to self host apps: there’s many applications that have easy to install images for docker.
But since my goal is to practice what I learn, and kubernetes is a widely used tool in the industry, I might as well use the opportunity.
But as I was considering using a classic Ubuntu Server with kubernetes, I paused: should I still use Proxmox?
Why virtualization on a homelab
I have a few reasons why I should use Proxmox and keep virtualization as a part of my toolbox:
-
I can practice clusters with just one piece of hardware
A big part of what makes kubernetes interesting is controlling clusters, not just containers. Having multiple VM will make it easier to simulate that use case.
-
I can test other OS while keeping all the applications running
When making a decision on OS usage, being able to properly test the differences is useful.
-
I can update and reboot one of the VM while everything else is still running
This is also a kind of scenario I would like to practice as much as needed. Some variations are possible without VMs but I’ll cover more cases this way.
Sidenote: Why not Incus?
Incus looks interesting, but learning focus at the moment is containers & orchestration, I want to keep the virtualization layer done with something I already know. It still is something I’ll be exploring later.
Summary
If your homelab is just a means to an end and you don’t want to make things more complicated than absolutely necessary, Ubuntu Server and Docker should cover most needs. If the goal is to learn, more layers means more complexity, flexibility and opportunities to learn.