Are Kubernetes LoadBalancer Services Highly Available?

8/16/2017

I want to expose my Kubernetes deployment externally. I've elected to create a Kubernetes 'Service' of type 'LoadBalancer'.

Can I assume this load balancer is provisioning outside of my cluster? If so, is it the responsibility of my container/cloud provider (Azure in this case), to provision a LB for my Kubernetes cluster?

Does this introduce a single point of failure? What happens when the LB fails? Does Azure/Amazon/Google provision the LB in a way that another 'hot' LB is waiting to jump in? Or is it possible my app would be temporarily unavailable while Azure provisions me another LB?

There seems to be a gray area between Kubernetes and the Kubernetes hosting service.

-- anschoewe
azure
kubernetes
load-balancing

3 Answers

8/17/2017

In the case of Google Container Engine, an external cloud load balancer is created and managed by Google.

Here you can see an example of a load balancer I have setup for a cluster I've deleted. enter image description here

As I add or remove node pools the cloud load balancer will automatically update the configuration. Note, this is different from an ingress controller. You can read more about it here: https://cloud.google.com/container-engine/docs/tutorials/http-balancer and https://cloud.google.com/load-balancing/

-- Dan Garfield
Source: StackOverflow

8/17/2017

Does Azure/Amazon/Google provision the LB in a way that another 'hot' LB is waiting to jump in?

For now, Azure does not support this. Azure support only one Load balancer for your availability set.

In Azure, there is no way to deploy two LB for one availability set. Based on my knowledge, Azure load balancer SLA same as Azure Vnet, only when this location is down, LB will down.

By the way, Azure support create multiple Vms in one LB to offer high SLA, so I guess the LB will not down.

But I have not find any official article about SLA of Azure load balancer.

Does this introduce a single point of failure?

Based on my knowledge, I don't think this is a single point of failure.

-- Jason Ye
Source: StackOverflow

8/17/2017

I asked our Microsoft rep this question:

This may seem like a silly question, but if I provision an Azure LB (layer 4) or Gateway (layer 7), can I assume the LB is fault tolerant? Meaning, if the underlying hardware running that actual LB dies, some other VM, controlled by Microsoft, will step in and continue handling traffic. Am I right to assume this? I'm not able to find any details on how Azure handles this. It's important because my cluster of Kubernetes nodes should not become unavailable if the Azure LB craps-out. I don't want single point of failure. Thoughts?

I received the following reply:

Yes.

So while this doesn't reveal any implementation details, it does confirm that the LB is highly available.

-- anschoewe
Source: StackOverflow