One small change is that I stopped using hl.local and moved to a reserved top level DNS name hl.test (see rfc2606 for more info).īelow are our requirements for the installation: My DNS server configuration is described here and won’t be covered in this article. We will also use 2 servers for HAProxy to provide high availability with a virtual IP addess of 10.11.1.30. Pre-requisitesįor Kubernetes, we will use 3 control-plane nodes and 3 worker nodes. The goal is to maintain service in the event of a loss of a (single) hypervisor host. We will use three KVM hosts to deploy resources. If one of the HAProxy servers becomes unavailable, the other one will serve traffic. HAProxy is my homelab load balancer of choice, and we will configure it with Keepalived to provide node redundancy. The load balancer distributes traffic to all healthy control plane nodes in its target list. You can’t automate what you don’t understand.Īs we will be deploying three Kubernetes control plane nodes, we need to deploy a kube-apiserver load balancer in front of them. I use Ansible a lot nowadays, but before I got to the point of automating my Kubernetes homelab, I had to do it by hand. The kubeadm tool is great if you need a simple way to deploy Kubernetes, and integrate it into provisioning systems such as Ansible.
Highly Available Kubernetes Homelab Cluster We are going to build a highly available Kubernetes homelab cluster with three control plane nodes and three worker nodes.