Wanting to dip my toes into kubernetes for homelab stuff and I have a few questions.
-
Do I need a specialized OS for it? I’ve been trying to get some TalOS VMs running but I’ve ran into some issues. Would you recommend like a Ubuntu server running kubernetes over something like TalOS?
-
Could I run this on a Windows server? I’m personally a Linux guy, but a friend who prefers windows server wanted to try it and I thought I’d ask.
-
Can I migrate Docker services to a Kube cluster? How easy is it?
-
Any recommendations for learning materials? I’ve clearly struggled with TalOS’s quick start materials as I haven’t been able to get into the tutorial cluster made with docker locally. I keep getting weird errors and reinstalling Talosctl and docker. I’ve diagnosed this as a “skill issue”. My learning budget is like $100 for a udemy class or good interactive guide (Paid for by work apparently. I was learning this for fun, but it may actually be needed knowledge for a project)


Kubernetes is great to get into. I don’t think it has that steep of a learning curve to get started. Sure, there are quite a few objects, but they all follow a pattern. The three essentials are pod (think of it as a container definition), a service (to make your pod accessible by other things) and ingress (which is basically a reverse proxy). There are quite a few other objects, but in the end most of them are just fancy ways to create these essential objects. Honorable mention is a PVC PersistedVolumeClaim that let’s you create storage objects.
You don’t, but there are distros which work a lot better than others. Especially regarding updates.
Kubernetes itself, no. Maybe a play around version of it. But nothing reliable. You can however add Windows Nodes to run windows workloads, but this is rather niche and usually not required for a homelab. If you are on windows set up VMs.
Yes! There are a few converters you can use. They are always a good starting point, as they will generate you all the objects you need.
I just started playing around with it and made big steps relatively quickly. But I can recommend the following: Create a few VMs. Ideally you need 3 Control Planes and at least 2 Workers. Since you will likely start without much monitoring the Control Planes barely need resources. As an OS I highly recommend Flatcar Linux as it has a kubernetes operator to handle updates automatically in k8s way. If you install it via proxmox you can add a Cloud Init File and make sure to include a ssh key for the user core. Make sure to include that ssh key during install.
Then when you have your 5 VMs created take a look at kubespray. It is a great tool to get started as it does all the heavy lifting during install. For the beginning go with the default config. If you want to add more things, you can just enable those modules down the road and run it again, then it will install the additional things.
Make sure to set the IPs of your VMs in the config and use the docker container to run the ansible script. Tip: when you go with flatcar you need to add the parameters --user Core --becomeUser root. They might be a bit different, don’t know from the top of my head right now.
Good luck with it! I think k8s is a good solution for homelabs and is a lot better than docker compose.
When you managed to get it running, check out ArgoCD. That way you can have your config in Git and ArgoCD ensures your cluster is always configured the way you have it in Git. With kubeseal you can encrypt secrets so you don’t have to have sensitive data in your repo.
And for storage, start with NFS shares, they are easy to get into. If you happen to have a NAS with TrueNAS, there is a project called DemocraticCSI. With that you can automatically provision storage on your NAS and set up a NFS, Iscsi or NvmeOf share.