I’m thinking about starting a self hosting setup, and my first thought was to install k8s (k3s probably) and containerise everything.
But I see most people on here seem to recommend virtualizing everything with proxmox.
What are the benefits of using VMs/proxmox over containers/k8s?
Or really I’m more interested in the reverse, are there reasons not to just run everything with k8s as the base layer? Since it’s more relevant to my actual job, I’d lean towards ramping up on k8s unless there’s a compelling reason not to.
Why not use both? I have PVE installed on all of my hosts and then use k3s/docker in VMs. If there ever is anything you don’t want to or just can’t deploy as a container (e.g. opnsense, hassio, truenas, windows [for whatever reason you might have]), you can just spin it up as a VM and not worry about adding and maintaining another physical machine
Unless you have multiple systems, I don’t think k8s will yield much benefit over plain docker.
So, if I plan to build a pi cluster I should get familiar with k8s?
Why not do both ? As I understand it, to do kubernetes clusters, you must have at least 3 hosts. They don’t need to be 3 different physical hosts: they could be VM (hosted on Proxmox).
Proxmox also having a very strong implementation of ZFS, then it could be used as the storage « host », and it gives you also the option to do snapshots of the VM (and the storage pool), as well as replication/etc.
They don’t need to be 3 different physical hosts: they could be VM (hosted on Proxmox).
That is fine for training purposes, but not for real hosting. You typically don’t guard against software crashes, but against hardware failures/outages. And this it not given with all three nodes on the same physical system.
In that case you can simply skip the HA setup and go with a single node. Or not use k8s at all and just manage containers using ansible and systemd or whatever.
It depends on your use case and what you are trying to achieve.
You do not need k8s (or k3s…) to use containers though. Plain old containers could also suffice, or Docker Swarm if you need some container orchestration functionality.
Trying to learn k8s would be a good reason to use k8s though :)