So I am looking to downsize to a 2 node Kubernetes cluster as my third node does not have any PCIe slots that can be used for networking. I am going to setup my router/firewall device as a Qdevice but I am curious if I need to set it up as a Kubernetes master. I am looking to do high availability of a dedicated link with shared storage being done via Long horn. I will be using k3s as it is simple to use and very fast.
Will Kubernetes work in a two node configuration with 4 total VMs? If not, will running a master node on a arm device be sufficient to make it work?
1 Like
Am I getting your question right - you’re asking if you’ll get a HA of k8s if you’ll run only 2 control-plane nodes?
Well, not really, at least no with “vanilla” setup. By default K8s keeps state in an Etcd cluster (usually running on the same control plane nodes). Etcd is a consensus based dist sys, meaning it needs a majority to determine the current leader. This in turn means that you need at least 3 nodes to tolerate a loss of one (see here).
Mixing architectures shouldn’t be a problem in general, so running one of the nodes on ARM64 should be fine. Only mind that if you want schedule workloads on that node - you’ll need to ensure that multi-arch images are available for those.
1 Like
I am looking for the kubernetes equivalent to Qdevice. I may end up just running a master in a LXC container on my firewall/router
Sorry for my ignorance, but I still hardly get what’s your current situation and what you’re trying to achieve. Specifically, mentioning the “qdevice” didin’t help a lot - I’m simply not experienced with corosync-style systems. Let me try asking a few follow up questions:
- currently you have a 3 node cluster and looking to downsize it into 2 nodes, right?
- what’s the current roles of these nodes? Are these three just control-plane (master) nodes? Or they all mixed with worker roles, i.e. supposed to run actual workloads too?
- are you at all concerned with High-Availability of your control plane? I.e. do you want to have an always available etcd, api-server, controller-manager, or some downtime is fine?