MetalLB 0.9: Bare Metal Load Balancing for Kubernetes
K8s Guru
2 min read

Table of Contents
Introduction
If you run Kubernetes outside of a managed cloud, the LoadBalancer Service type doesn’t magically come with an external IP. MetalLB fills that gap by integrating with your existing network so Services can be reachable without resorting to brittle NodePort workarounds.
MetalLB 0.9, released on October 5, 2020, keeps pushing MetalLB toward “boring reliability” for on-prem clusters: better BGP support, a more dependable Layer 2 mode, and tighter alignment with Kubernetes Service workflows.
Choosing BGP vs Layer 2 (quick intuition)
- BGP mode: best when you have routers/switches you can peer with and you want predictable failover and multi-node traffic distribution.
- Layer 2 mode: best for simpler networks where BGP isn’t an option, but be mindful that L2 designs can be sensitive to ARP/NDP behavior and L2 domain boundaries.
BGP Improvements
- BGP configuration enhancements provide more flexible routing options.
- Multi-protocol support enables better integration with existing network infrastructure.
- Route advertisement improvements provide better control over IP allocation.
- Failover enhancements enable faster recovery from node failures.
Layer 2 Mode Enhancements
- ARP/NDP improvements provide better address resolution for IPv4 and IPv6.
- Failover mechanisms enable automatic failover when nodes become unavailable.
- Load distribution improvements provide better traffic distribution across nodes.
- Health checking enhancements improve detection of node and service failures.
Kubernetes Integration
- Service integration improvements provide better alignment with Kubernetes Service API.
- IP allocation enhancements enable more flexible IP address management.
- Operator support simplifies deployment and configuration.
- Metrics expansion exposes detailed load balancer metrics for monitoring.
Getting Started
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.9.6/config/manifests/metallb-native.yaml
Configure IP address pool:
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
name: default-pool
spec:
addresses:
- 192.168.1.100-192.168.1.200
Summary
| Aspect | Details |
|---|---|
| Release Date | October 5, 2020 |
| Headline Features | BGP improvements, Layer 2 enhancements, better Kubernetes integration |
| Why it Matters | Provides load balancing capabilities for bare metal Kubernetes clusters |
MetalLB 0.9 continues to evolve as the standard for bare metal load balancing, enabling Kubernetes to work seamlessly in on-premises environments.