I have to admit, changing my workflow from pure VMs to a mix of containers was a big adjustment. It's not that I didn't want to learn Docker, but that my Proxmox server had plenty of power, so why change to a more efficient way of working when I was already used to one way of doing things? But I eventually relented and have seen the light of containerized workloads.
I'd just about gotten used to the abstractions of Docker, but then I started reading up about Kubernetes, and the more I read, the more I was intrigued. Container orchestration with auto-scaling, high availability, monitoring, and more are all available without adding more containers to the mix. I had to try it out, and while it gave me a headache, it's glorious.
Okay, but why the headache of Kubernetes at home?
Ask not why, only if it can be done
I've never liked handling Docker on the desktop, even when I found dashboards I liked. I'm not complaining about the Ask Gordon AI that's in Docker Desktop now, because I like having in-app chat support, but the rest of the UI is terrible. One thing I've found through my home lab journey is that I value uptime, whether that's provided by Proxmox clusters or OPNsense connected with CARP.
I also like to see the whole of what I'm managing at a glance, whether that's on a dashboard or a sidebar, or on the best examples, both. As long as I can see the information I'm looking for without having to delve too many steps deep, I'm a happy home labber.
Home lab isn't fun for me unless I'm learning new things
I learn from doing, and from repetition, and pulling pre-configured packages from Docker isn't enough for my brain. I know I can go and edit the configuration files after they've been pulled, and I know that's functionally the same as writing out a YAML file and importing that, but for some reason, the only way that sticks is by manually typing out the YAML beforehand. Kubernetes gives me another layer of challenge, but because the networking, secrets, and other layers are all visible, it's easier for me to visualize the interconnects between them.
Kubernetes makes me set up the overarching container management layers from the start
I like the easy replacement feel of Docker, but I've never liked managing the containers. Something always felt missing, and the only way to get close to where I wanted was by adding more and more Docker containers to the stack, which got unwieldy.
However, the nested virtualization dashboard for Proxmox made perfect sense to my brain, and I could see the layout of everything, individual performance metrics, and how things connected. And that's what Kubernetes feels like to me. Everything I need to see is there at a glance, and my containers are a small part of the overall whole.
Kubernetes
I made things easier by going for MicroK8s instead
It's my home lab, and I can do what I want in it
Some might say that Docker Swarm makes more sense for home lab use, and I won't dispute that. I will say that some ways of doing things in Kubernetes make more sense to me, and that's all I need to know. Networking, for example, makes a lot of sense because it's not that far from how I'm used to using HAProxy for load balancing and ingress via reverse proxy, and I get a fully-featured dashboard to handle everything I need.
I know I keep mentioning the dashboard, but it's something that MicroK8s does well, and only Proxmox has a better UI from my standpoint. I can live with not every service I want being available as K8s code from the get-go, and the Kompose utility gets me most of the way with any containers I want to try out to see if they're worth the extra effort to get them running in K8s.
Now I feel like I'm learning with every keystroke
One thing I've come to appreciate is Kubernetes Secrets, which is essentially a password manager for my SSH keys, OAuth tokens, and API keys, so that I'm not passing plaintext secrets in the env files, like I was with Docker Desktop. I've since learned that Docker Secrets exist, and I don't know how the tutorials I was using didn't mention that pertinent fact, but I value the overall package with Kubernetes.
And there are other flavors of Kubernetes to learn
I want to set up a K3s cluster now, to see how that behaves differently as more things seem to be packaged in with how it creates pods. And I've noticed plenty of other options I want to use. k0s looks terrific, and I'll be throwing together a mini PC or three with Linux on them to try that out, and Lens looks like VS Code but for K8s use, so that's on the list. I'm not sure which ones will eventually stay booted up in my home lab, as I'm a heavy Proxmox user most of the time, but it's always good to have options ready.
I'm only starting my Kubernetes journey, but I like it already
There's so much to learn in the Kubernetes ecosystem that it could take me a lifetime, but I'm up for the challenge. I've already got a list of tools to check out next, and I already use Podman for some things, so converting those containers into K8s ones should be simple enough. I'm fairly sure my home lab will never need to scale to the levels that Kubernetes enables, but I might test it one time to see what it does to the hardware I've got it running on. And let's not forget the thriving K8s community, which makes learning a new tech stack easier.
