MetalLB: The Cornerstone of Bare-Metal Kubernetes Load Balancing
In today's increasingly cloud-centric world, Kubernetes has become the de facto standard for container orchestration. However, when Kubernetes clusters are deployed in bare-metal environments (such as private data centers or edge computing nodes), a core challenge emerges: how to provide external load balancing capabilities for services within the cluster? Cloud service providers typically integrate LoadBalancer service types natively, but this functionality is often missing in bare-metal environments. MetalLB was created to address this pain point. It is an open-source network load balancer that brings a cloud-like LoadBalancer experience to bare-metal Kubernetes clusters.
The MetalLB project is currently in Beta, but its stability and reliability have been proven in numerous production and non-production environments. The project was originally copyrighted and developed by Google, but since March 2019, it is no longer an official Google project. It has transitioned into an open-source project driven by a small maintenance team and the community, demonstrating its strong community vitality.

Five Core Highlights of MetalLB
MetalLB holds an important position in the bare-metal Kubernetes domain due to its unique design and features. Here are its five core highlights:
1. Bare-Metal Kubernetes Load Balancing Solution
MetalLB fills the gap of native LoadBalancer service types in bare-metal Kubernetes clusters. It allows users to assign external IP addresses to Kubernetes services and effectively load balance traffic without cloud provider support. This enables bare-metal clusters to expose internal services to external networks as easily as in cloud environments, greatly enhancing deployment flexibility and availability.

2. Supports Two Main Operation Modes: Layer 2 and BGP
MetalLB offers two core operation modes to adapt to different network environments and requirements:
- Layer 2 Mode (ARP/NDP): In this mode, MetalLB advertises service IP addresses by responding to ARP (IPv4) or NDP (IPv6) requests on a single node. This mode is simple to configure, highly compatible, and suitable for most simple network environments. All external traffic is first routed to a specific node, and then forwarded by that node's kube-proxy to the backend Pods.
- BGP Mode (Border Gateway Protocol): BGP mode actively advertises service IP addresses by establishing BGP peering sessions with external routers. This mode achieves true multi-node load balancing and provides more granular traffic control capabilities, suitable for large-scale deployments and complex network environments with strict high availability requirements. It can better leverage network infrastructure for optimal path selection and failover.
3. Lightweight and Kubernetes-Native

MetalLB is designed to integrate seamlessly with Kubernetes, running as a component within the cluster. It provides load balancing functionality as software, eliminating the need for expensive proprietary hardware devices and reducing deployment and operational complexity. Its lightweight nature ensures minimal consumption of cluster resources while maintaining high performance.
4. Cost-Effectiveness and Flexibility
As an open-source solution, MetalLB helps users avoid reliance on expensive hardware load balancers or specific cloud platform load balancing services. This significantly reduces infrastructure costs, especially for enterprises looking to build private or hybrid cloud environments. Furthermore, MetalLB offers highly customizable options, allowing users to configure it flexibly according to their network topology and business needs.
5. Dynamic IP Address Allocation and External Advertisement

MetalLB is responsible for dynamically allocating and reclaiming external IP addresses for LoadBalancer-type services from a user-configured IP address pool. Once an IP address is allocated, MetalLB advertises these IP addresses to the external network via Layer 2 or BGP protocols, ensuring that external clients can discover and access these services. This dynamic management mechanism simplifies the IP address allocation process and ensures continuous service accessibility.
Project Status and Technical Integration
MetalLB's configuration method is also continuously evolving. Starting from v0.13.0, its configuration has transitioned from traditional ConfigMaps to Custom Resources (CRs), which are more aligned with the Kubernetes native pattern, improving management efficiency and scalability.
In terms of compatibility, MetalLB is generally not compatible with most public cloud platforms because it relies on standard routing protocol implementations that cloud platforms typically do not provide. However, its support on specific platforms such as Hetzner, OVH, OpenShift OCP, OpenStack, Proxmox, VMware, and Vultr demonstrates its broad applicability in private and hybrid cloud scenarios. It is worth noting that MetalLB uses FRR-K8s as the default backend for handling BGP sessions. FRR-K8s is a Kubernetes wrapper for FRR, providing enhanced features not available in native BGP implementations, such as pairing BGP sessions with BFD sessions and IPv6 address advertisement, further enhancing MetalLB's capabilities in complex network environments.

In summary, MetalLB provides a powerful, flexible, and cost-effective load balancing solution for bare-metal Kubernetes clusters, making it an indispensable tool for building high-performance, highly available private cloud infrastructure.


