Metal Loadbalancer Controller
The metal-loadbalancer-controller is responsible for managing the lifecycle of Services of type LoadBalancer in a Kubernetes cluster running on bare metal servers. The project consists of two main components:
- Controller: The main component that watches for changes in
Serviceresources and manages the lifecycle of load balancers. - Speaker: Is responsible for announcing the load balancer IP address to
metalbondwhich acts as a route reflector to the bare metal servers.
The metal-loadbalancer-controller is designed to work in an IPv6 only environment.
Controller
The controller component has the following responsibilities:
- Watches for changes in
Serviceresources of typeLoadBalancerand uses theClusterIPof aServiceand patches theLoadBalancerstatus using thisClusterIP. - Setting the
PodCIDRson theNoderesources to ensure that the load balancer can route traffic to the pods. Here it takes the mainNodeIP address and the configurednode-cidr-mask-sizeand patches theNode.spec.podCIDRsfield.
Metalbond-Speaker
The speaker is typically deployed as a DaemonSet in a bare metal cluster. It is responsible for announcing the load balancer IP address to the metalbond service, which acts as a route reflector to the bare metal servers. The speaker can be configured to which VNI the load balancer IP address should be announced.