Skip to content

dlespiau/balance

Repository files navigation

Client-side L7 load balancing for Kubernetes Services

This repository implements in-process L7 load balancing algorithms for Kubernetes processes.

  • Go library for your Go microservices.
  • Uses the Kubernetes built-in Service discovery mechanism to find out which endpoints requests can be routed to.
  • Offers an abstraction to implement a variety of L7 load balancing mechanisms.
  • Implements affinity and non-affinity algorithms.
  • List of supported algorithms:

Using the library

XXX

Sure but, why?

The Kubernetes Service abstraction is implemented as a L4 load balancer using iptables DNAT on each node to route the Service Virtual IPs to pod IPs.

Unfortunately, this leaves user without much control about where the requests are going. Worse there are cases where L4 fails entirely to load balance anything: think about HTTP/2 multiplexing all requests onto the same connection!

My Kubecon talk (Copenhagen, May 2018), The Untapped Power of Services - L7 Load Balancing Without a Service Mesh gives a lot more details about the reasons I've started this work.

The talk is available in video format:

The talk in video

About

Client side load balancing for Kubernetes clusters

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published