paint-brush
MetalLB: a load balancer for bare metal Kubernetes clustersby@FedakV
10,798 reads
10,798 reads

MetalLB: a load balancer for bare metal Kubernetes clusters

by Vladimir FedakJanuary 5th, 2018
Read on Terminal Reader
Read this story w/o Javascript
tldt arrow

Too Long; Didn't Read

Until recently, Kubernetes did not have the native support for load balancing for the bare metal clusters. <a href="https://github.com/google/metallb" target="_blank">MetalLB</a> is the new solution, currently in alpha version, aiming to close that gap.

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - MetalLB: a load balancer for bare metal Kubernetes clusters
Vladimir Fedak HackerNoon profile picture

Until recently, Kubernetes did not have the native support for load balancing for the bare metal clusters. MetalLB is the new solution, currently in alpha version, aiming to close that gap.

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 Kubernetes cluster version 1.8.0 or above, without any other load balancing solution installed
  • One or several BGP routers working with 4-byte AS numbers (RFC 6793)
  • A bundle of IPv4 addresses for the routers to assign

Here are more details of the requirements. As MetalLB project will surely evolve, please refer to the maturity page for explanations.

You can test the self-contained minikube MetalLB functionality by following this tutorial. To deploy this tool to a production cluster, please head to the installation and usage guides. This detailed design document will help you get the tool up and running in no time.

In case you wish to take part in the project evolution — please follow this hacking guide for technical info. Any usage feedback and suggestions will make the MetalLB developers very happy, so feel free to share your thoughts and ideas!

Previously I’ve posted this article in my company’s blog: https://itsvit.com/blog/metallb-load-balancer-bare-metal-kubernetes-clusters/