PureLB#

PureLB is a lightweight Kubernetes Service LoadBalancer for non-cloud deployments. It allocates IP addresses from configured pools and uses standard Linux networking to announce them, giving your services external reachability without a cloud provider.

GitHub | #purelb-users on Kubernetes Slack

Features#

  • Local and Remote Addresses. Local addresses are added to host interfaces for same-subnet access. Remote addresses are added to a dummy interface and advertised via BGP for routed topologies.

  • Multi-Subnet Local Addresses. Multi-pool allocation gives a single service local addresses on every subnet in your cluster, making it reachable from all network segments without routing.

  • Address Lifetime Control. Non-permanent address lifetimes prevent conflicts with Flannel, DHCP, and other systems that inspect address flags to select a node’s primary IP.

  • Integrated BGP Routing. Ships with k8gobgp as a sidecar, providing BGP route advertisement with no external routing software required.

  • Dual-Stack IPv4 and IPv6. Full support for IPv4, IPv6, and dual-stack deployments.

  • CRD-Based Configuration. Configured using Custom Resource Definitions with schema validation.

  • External IPAM Integration. Integrates with Netbox for enterprise IP address management.

  • Prometheus Metrics. Built-in metrics for pool utilization, election health, and node agent activity.

  • kubectl Plugin. The kubectl-purelb plugin provides operational visibility: pool status, election state, BGP sessions, and troubleshooting.

  • Multiple LoadBalancer Controllers. Implements LoadBalancerClass so PureLB can coexist with other load balancer controllers.

  • GARP Support. Configurable Gratuitous ARP for EVPN/VXLAN environments.

Get Started#

  1. Prerequisites
  2. Install PureLB
  3. Create your first LoadBalancer Service