<pre><code>                                  |--&gt; service1:8081 --&gt; pod1-a, pod1-b, pod1-c
   UI -&gt; load balancer -&gt; ingress (mydomain.com)
                                  |--&gt; service2:8082 --&gt; pod2-a, pod2-b, pod2-c
</code></pre>

<p>So from <code>service1</code>, I could call <code>service2</code> directly with <code>http://service2:8082</code>, but since this is not being done through the UI -> load balancer, how does this get load balanced? Should I not call <code>service2</code> directly, and call it through <code>mydomain.com/service2</code> instead so it would have to go through the flow?</p>

<p>If you are by-passing the ingress, meaning directly calling <code>http://service2:8082</code> from <code>service1</code>, Kubernetes would pick a random backend based on the default <a href="https://kubernetes.io/docs/concepts/services-networking/service/#proxy-mode-iptables" rel="nofollow noreferrer"><code>Proxy-mode: iptables</code></a>.</p>

<p>You can tweak this a bit more if you are using something like <a href="https://kubernetes.io/docs/concepts/services-networking/service/#proxy-mode-ipvs" rel="nofollow noreferrer">ipvs</a>. For example, set up round robin.</p>

<p>You can also use the old <a href="https://kubernetes.io/docs/concepts/services-networking/service/#proxy-mode-userspace" rel="nofollow noreferrer"><code>Proxy-mode: userspace</code></a> if you'd like round robin only.</p>

<p>All these options are configurable using the <a href="https://kubernetes.io/docs/reference/command-line-tools-reference/kube-proxy/" rel="nofollow noreferrer"><code>-proxy-mode ProxyMode</code></a> flag on the kube-proxy.</p>
