Ingress load balancing

Hello, I have a question about kubernetes ingress router. Take this configuration for example:

namers:
- kind: io.l5d.k8s

routers:
- protocol: http
  identifier:
    kind: io.l5d.ingress
  servers:
    - port: 80
      ip: 0.0.0.0
      clearContext: true
  dtab: /svc => /#/io.l5d.k8s

We have a cluster with 6 nodes. If user sends http requests to one master node, is load balancing performed or not?

A)

http request (node 1) => ingress routing => pod (node 1)
http request (node 1) => ingress routing => pod (node 1)
http request (node 1) => ingress routing => pod (node 1)
http request (node 1) => ingress routing => pod (node 1)
...

B)

http request (node 1) => ingress routing => load balancing => pod (node 4)
http request (node 1) => ingress routing => load balancing => pod (node 1)
http request (node 1) => ingress routing => load balancing => pod (node 3)
http request (node 1) => ingress routing => load balancing => pod (node 6)
...

In the linkerd example configuration, I see that only /#/io.l5d.k8s namer is used (there is no io.l5d.k8s.daemonset transformer). Does it mean that routing is performed like in example A)? Or is there some hidden logic and load balancing is applied? Because it seems to me that pods in our master node 1 are accessed way too often then in other nodes.

Thank you,
Zdenek

Good question @zsojma. This looks like expected behavior. All things being equal, linkerd will load balance evenly between instances, like in your option B). By default linkerd uses Power Of Two Choices as a load balancing algorithm. For more information have a look at:
https://linkerd.io/config/1.3.2/linkerd/index.html#power-of-two-choices-least-loaded
https://twitter.github.io/finagle/guide/Clients.html#power-of-two-choices-p2c-least-loaded

With respect to seeing more load on your master node. Linkerd’s load-balancing will favor nodes with lower latencies. If ingress is running on the master node, and you have application instances also on that master node, linkerd will favor those, as it’s avoiding a network hop and will be faster.

Typically we do not see users running application instances on their master nodes, better to move load onto worker nodes, and linkerd ingress will balance more fairly across those.