New Kubernetes Appliance with Load Balancer

503

Our CNCF-Certified Kubernetes Appliance has been available for a while now, but recently some more people has started to use it and one issue in particular has showed up regularly: the load balancer support was missing! It is one thing to be able to run some Kubernetes application, but it must also be possible to actually access it from outside the Kubernetes cluster itself… 😅

There is more than one way to expose the Kubernetes pod or deployment:

  • NodePort Service Type
  • Assigning External IP directly
  • LoadBalancer Service Type

That third option was missing… until now! 🤓

The ‘vanilla’ Kubernetes distribution lacks an integrated load balancer provider but there are several third-party offerings available that try to cover that gap.

We evaluated them and in the end we decided to integrate into our Kubernetes Appliance the bare-metal load balancer MetalLB. Here you have a quote from their website:

Bare metal cluster operators are left with two lesser tools to bring user traffic into their clusters, “NodePort” and “externalIPs” services. Both of these options have significant downsides for production use, which makes bare metal clusters second class citizens in the Kubernetes ecosystem.

MetalLB fixes this for us and makes our Kubernetes Appliance much more useful. We are using their ARP/Layer2 mode which is very similar to the battle-tested Keepalived approach.

In short, now you can expose the service on a load-balanced IP (External IP) which will float across the Kubernetes nodes in case some node fails (this is where it differs from a simple External IP assignment).

As long as you ensure that the network traffic is routed to one of the Kubernetes nodes on this load-balanced IP, then your service should be accessible from the outside. Time to play with this new feature! 👍

ℹ️ There’s a step-by-step tutorial on how to deploy Kubernetes with Load Balancer available from our Customer Portal.