|--> service1:8081 --> pod1-a, pod1-b, pod1-c
UI -> load balancer -> ingress (mydomain.com)
|--> service2:8082 --> pod2-a, pod2-b, pod2-cSo from service1, I could call service2 directly with http://service2:8082, but since this is not being done through the UI -> load balancer, how does this get load balanced? Should I not call service2 directly, and call it through mydomain.com/service2 instead so it would have to go through the flow?
If you are by-passing the ingress, meaning directly calling http://service2:8082 from service1, Kubernetes would pick a random backend based on the default Proxy-mode: iptables.
You can tweak this a bit more if you are using something like ipvs. For example, set up round robin.
You can also use the old Proxy-mode: userspace if you'd like round robin only.
All these options are configurable using the -proxy-mode ProxyMode flag on the kube-proxy.
Invoking a service from another service will hit the iptable routes on the node and pick service endpoint to route traffic to. This will be faster.
If you call it through mydomain.com/service2, then the flow passes through additional L7 ingress and will be comparatively slow.