Kubernetes load balancer

Hello everybody, I hope you doing well these days,
I’m following kubernetes series on udemy, in load balancer section it says it only works on public cloud such as aws , Google cloud and so on.

So what is a good solution if I don’t use any public cloud and use some bare metal servers ? How can I use load balancer with this scenario?

And what’s role of Ingress/egress load balance?

In that case, we can use Nginx ingress controller or HaProxy.

Is it possible to create a pod within the cluster as Nginx ingress controller ? or it has to be outside of cluster?