Gives bare-metal Kubernetes the LoadBalancer Services that cloud clusters get for free
Apache-2.0
- Go
- CSS
- JavaScript

About MetalLB
On a managed cloud, a Kubernetes Service of type LoadBalancer just works because the cloud provisions an external load balancer behind it. On bare metal or on-prem there is no such provider, so those Services sit stuck in pending forever. MetalLB fills exactly that gap.
It hands out real, reachable IP addresses for LoadBalancer Services and announces them on your network using protocols routers already understand. ARP (Layer 2) mode points an address at one node and fails it over on node loss; BGP mode peers with your routers to spread traffic across nodes and integrate with the wider network. It works alongside FRR, and the broader stack pairs naturally with keepalived and VRRP.
Written in Go, MetalLB self-hosts inside the cluster. The main branch is the development branch, so pin a stable release for production. Apache-2.0 licensed.
Key features
- LoadBalancer Services for bare-metal Kubernetes clusters
- Layer 2 (ARP) mode with node failover
- BGP mode peering with network routers
- Address pool allocation for external service IPs
- Integrates with FRR for BGP
Details
- First released
- 2017
- Platforms
- Linux
- Deployment
- Self-hostable (in-cluster)
- Language
- Go
- Protocols
- ARP · BGP
- License
- Apache-2.0
