<p>I'm running a Kuberenets with 1 master and 2 slaves.  I have a deployment and service pointing to it with type of NodePort. I'm able to access the service from the workers themselves, but I want to expose the service in a way it will load balance between the workers and without specifying a port. I'm running on bare-metal, so I can't expose the service as a LoadBalancer and use google/amazon load balancing.
How can I do that?</p>

<p>You can use <a href="https://metallb.universe.tf" rel="nofollow noreferrer">metalLB</a> which hooks into your Kubernetes cluster, and provides a network load-balancer implementation. In short, it allows you to create Kubernetes services of type <code>LoadBalancer</code> in clusters that don’t run on a cloud provider, and thus cannot simply hook into paid products to provide load-balancers.</p>
<p>It has two features that work together to provide this service: address allocation, and external announcemen</p>
<p>MetalLB requires the following to function:</p>
<ol>
<li>A Kubernetes cluster, running Kubernetes 1.13.0 or later, that does not already have network load-balancing functionality.</li>
<li>A cluster network configuration that can coexist with MetalLB.</li>
<li>Some IPv4 addresses for MetalLB to hand out.</li>
<li>Depending on the operating mode, you may need one or more routers capable of speaking BGP.</li>
</ol>
