Until recently, Kubernetes did not have the native support for load balancing for the bare metal clusters. is the new solution, currently in alpha version, aiming to close that gap. MetalLB As of now, Kubernetes comes with Network LB solution, which is actually a glue code calling for various IaaS cloud platforms (AWS, Azure, GCP, etc.). However, deploying Kubernetes on anything but the supported platforms (like a private cloud or a bare metal cluster) resulted in service objects with spec.type=LoadBalancer to remain in Pending status forever. Thus said, going for bare metal clusters left Kubernetes administrators with the choice between Nodeport and ExternalIPs, none of which was a perfect solution. MetalLB, a new load balancer offers a Network LB implementation that works on top of standard network equipment. MetalLB prerequisites and requirements The prerequisites for MetalLB stable operation include: A clean cluster version 1.8.0 or above, without any other load balancing solution installed Kubernetes One or several routers working with 4-byte AS numbers ( ) BGP RFC 6793 A bundle of IPv4 addresses for the routers to assign Here are more details of the . As MetalLB project will surely evolve, please refer to the for explanations. requirements maturity page You can test the self-contained minikube MetalLB functionality by following this . To deploy this tool to a production cluster, please head to the and guides. This detailed will help you get the tool up and running in no time. tutorial installation usage design document In case you wish to take part in the project evolution — please follow this for technical info. Any will make the MetalLB developers very happy, so feel free to share your thoughts and ideas! hacking guide usage feedback and suggestions Previously I’ve posted this article in my company’s blog: https://itsvit.com/blog/metallb-load-balancer-bare-metal-kubernetes-clusters/