To run k8s on bare metal server clusters there's only Metallb option to bring user traffic into clusters NodePort services, via externally exposed IP address(es). I wasn't talking about k8s internal load balancers and reverse proxies
See https://kubernetes.github.io/ingress-nginx/deploy/baremetal/
Of course you have to route traffic to your cluster, but you are implying some cloud based load balancer lockin which just isn't true
Third option would be to expose pods directly in the network. EKS does this by default, but from my experience it's quite rare for people to leverage it.