Requirements

Cluster requirements

Hardware

  • Minimum of 3 hosts (1 controller, 2 workers), this example will be using Ubuntu, this guide will assume the nodes are already setup
    • Try keep the number of control nodes, this will ensure the (explanation better than I can explain here
    • scale this up as required, the number of nodes in this case will not effect the setup process
    • ensure you have an un-even number of control nodes to allow make sure leader election is reliable.
    • CPU - minimum of 2 cores per host
    • Memory - minimum of 2gb per host (3-6gb recommended) NOTE: Control nodes require less resources than the worker nodes but will need adjusting depending on the clusters workload.

!! The remainder of this guide will assume you have deployed fresh ubuntu/debian nodes as per the os requirements above the below details some of the requirements below will be installed later in this guide.

This guide will go through how to setup HAProxy on it’s own node. Do not install on the kubernetes nodes.

Software

  • kubeadm
  • kubelet
  • kubectl
  • containerd
  • nfs client (for stateful apps) - guide here

Kernel modules

  • br_netfilter enabled
  • net.ipv4.ip_forward enabled
  • net.bridge.bridge-nf-call-iptables enabled

networking

  • Static IP on each node (recommended)
  • Full communication between nodes
  • Load balancer if using multiple load balancers (haproxy tls configuration here)

Additional requirements

  • An NFS server for persistent stateful apps
  • a firewall/switch/router capable of BGP - example for this will be provided using vyos (not required but highly recommended)
  • a load balancer (virtual or physical) to use for the kube Api (not required but highly recommended)