If you're trying to use a NodePort, then your Service type should be NodePort.
type: NodePort #(not LoadBalancer)
It is my understanding that the LoadBalancer type is essentially built for cloud environments where the cloud provider provides a load balancer. You are NOT creating a load balancer by creating a LoadBalancer ...
TL;DR : you need a shared integration environment
There are a lot of moving parts here, so giving explicit advice on what to do might be quite impossible. When you're faced with a complex situation, the trick is to know how to think, rather than what to do.
This question will invite the criticism of generating opinionated answers, because there are many ...
Suddenly found the answer with ipvs.
All that had to be done was put kube-proxy in ipvs mode with rr (roundrobin) scheduler.
kubectl -n kube-system edit cm kube-proxy
Then restart kube-proxy and we have proper loadbalancing
I figured it out, and SELinux is the difference. That is, SELinux on the HAProxy host (not a cluster node):
"SELinux only allows the web server to make outbound connections to a limited set of ports"
That is, you can't make an outbound http request to any port in the NodePort range (30000-32768) without opening that port on the "client",...
which deploys containers based on Distroless
Using Distroless is a good practice! This typically means that you don't have more than the absolute minimum in your container to run your application - it is typically just your application and some necessary libraries. This also means that there are no extra tools and debugging possibilities within the ...
The use case you described is one that is covered by ingress-controller. Ingress controller will listen to an static IP which is mapped to kubernetes service of type LoadBalancer and will then forward the traffic to the pods as required.
LoadBalancer Services are used to create services that listen to traffic from outside the cluster.
One you assign a static ...