Overview of load balancing for Google Distributed Cloud

This document explains the load balancing options supported by Google Distributed Cloud.

There are several load balancing options available to you. Choose the option that seems most suited to your environment and your needs. For example, you might choose an option that requires minimal configuration. Or you might choose an option that aligns with the load balancers you already have in your network.

These are the available options:

  • MetalLB bundled

  • Seesaw bundled

  • F5 BIG-IP integrated

  • F5 BIG-IP set up manually

  • Citrix set up manually

  • Any load balancer that you set up manually

MetalLB

The MetalLB load balancer is bundled with Google Distributed Cloud and is especially easy to configure. The MetalLB components run on your cluster nodes, so you don't have to create separate VMs for your load balancer.

You can configure MetalLB to perform IP address management. This means that when a developer creates a Service of type LoadBalancer, they don't have to specify a VIP for the Service. Instead, MetalLB automatically chooses a VIP from an address pool that you provide ahead of time.

For more information, see Bundled load balancing with MetalLB.

Seesaw

The Seesaw load balancer is bundled with Google Distributed Cloud and requires a bit more manual configuration than is required by MetalLB. The Seesaw load balancer runs on VMs that are separate from your cluster nodes.

For more information, see Bundled load balancing with Seesaw.

F5 BIG-IP

The F5 BIG-IP load balancer is not bundled with Google Distributed Cloud, so you must get a license and set up the load balancer separately from installing Google Distributed Cloud.

You can configure Google Distributed Cloud to be integrated with F5 BIG-IP in the following sense: when a developer creates a Service of type LoadBalancer and specifies a VIP for the service, Google Distributed Cloud will automatically configure the VIP on the load balancer.

You can also use F5 BIG-IP as a manually configured load balancer. In this case, Google Distributed Cloud does not automatically configure Service VIPs.

Citrix

We document how to set up the Citrix load balancer as an example of setting up a load balancer manually. With any load balancer that you set up manually, you must configure mappings between VIPs, node addresses, and nodePort values. For information, on how to do this for the Citrix load balancer, see Manual load balancing with Citrix.

Manual load balancing in general

You can use any load balancer of your choice as long as you set it up manually. With any load balancer that you set up manually, you must configure mappings between VIPs, node addresses, and nodePort values. For general information on how to do this, see Manual load balancing.

Setting aside virtual IP addresses

Regardless of which load balancer you use, you must set aside several virtual IP addresses (VIPs) that you intend to use for load balancing.

For your admin cluster, you must set aside these VIPs:

  • VIP for Kubernetes API server
  • VIP for add-ons

For each user cluster you intend to create, you must set aside these VIPs:

  • VIP for the Kubernetes API server
  • VIP for the ingress service

For example, suppose you intend to have two user clusters. Then you would need two VIPs for your admin cluster and two VIPs for each of your user clusters. So you would need to set aside six VIPs.

Node IP addresses

If you choose one of the following load-balancing options, then you can either use static IP addresses for your cluster nodes, or you can have your cluster nodes get their IP addresses from a DHCP server:

  • MetalLB
  • Seesaw
  • F5 BIG-IP integrated

If you choose a manual load-balancing option, then you must use static IP addresses for your cluster nodes.

If you choose to use static IP addresses, you must set aside enough addresses for the nodes in the admin cluster and the nodes in all the user clusters you intend to create. For details about how many node IP addresses to set aside, see Plan your IP addresses.

Creating Services in your cluster

After your user cluster is running, application developers might want to create Kubernetes Services and expose them to external clients.

For Services of type LoadBalancer, VIPs must be configured on the load balancer. How those VIPs get configured depends on your choice of load balancer.

MetalLB

In the user cluster configuration file, you specify address pools that the MetalLB controller uses to assign VIPs to Services. When a developer creates a Service of type LoadBalancer, the MetalLB controller chooses an address from a pool and assigns the address to the Service. The developer does not have to specify a value for loadBalancerIP in the Service manifest.

Seesaw

When a developer creates a Service of type LoadBalancer, they specify an external IP address. For example:

spec:
  type: LoadBalancer
  loadBalancerIP: 192.168.100.1

Google Distributed Cloud automatically configures the specified address on a network interface of a Seesaw VM.

F5 BIG-IP integrated

When a developer creates a Service of type LoadBalancer, they specify an external IP address. For example:

spec:
  type: LoadBalancer
  loadBalancerIP: 192.168.100.2

Google Distributed Cloud automatically configures the specified address on a network interface of the F5 BIG-IP load balancer.

Manually configured load balancer

If you have chosen a manual load balancing option, developers can follow these steps to expose a Service to external clients:

  • Create a Service of type NodePort.

  • Choose a VIP for the Service.

  • Manually configure the load balancer so that traffic sent to the VIP is forwarded to the Service.