Our Managed Private Clusters uses MetalLB to provide Load Balancing and High Availability. We support all modes provided by MetalLB:
Layer 2 (ARP/NDP)¶
In layer 2 mode, one node in the cluster takes ownership of the service, and uses standard address discovery protocols (ARP for IPv4, NDP for IPv6) to make those IPs reachable on the local network. From the LAN’s point of view, the announcing machine simply has multiple IP addresses.
In BGP mode, multiple nodes in the cluster can establish BGP peering sessions with nearby routers, and tell those routers how to forward traffic to the service IPs. Using BGP allows for true load balancing across multiple nodes, and fine-grained traffic control thanks to BGP’s policy mechanisms.
Private Network Load Balancer¶
Public Load Balancer is the default choice if no annotation is set on the service. To use internal (Private Network) Load Balancer can the annotation
metallb.universe.tf/address-pool: internal be used
apiVersion: v1 kind: Service metadata: annotations: metallb.universe.tf/address-pool: internal name: nginx labels: app: nginx spec: ports: - port: 80 protocol: TCP selector: app: nginx type: LoadBalancer
Same Load Balancer, Multiple Services¶
It is possible to share the same Load Balancer across multiple services as long as the services do not use the same ports. For services to share Load Balancer all the affected services need the same annotation version of
apiVersion: v1 kind: Service metadata: annotations: metallb.universe.tf/allow-shared-ip: shared name: nginx labels: app: nginx spec: ports: - port: 80 protocol: TCP selector: app: nginx type: LoadBalancer