<p>currently I have 3 virtual machines (1 master kubernetes node and 2 slaves).</p>

<p>I want to create a service which encapsulates 3 replicas of my container.</p>

<p>I am curious if by default, in this local environment, when creating the service, kubernetes offers a load balancer by default, even though it was NOT specified in the service yaml file. Does it offer round robin by default ? </p>

OBI
<p>If your not on a supported cloud provider, your pretty much stuck with NodePort or ClusterIP for service types. A project I used when I was experimenting with a local kubernetes environment was <a href="https://metallb.universe.tf/" rel="nofollow noreferrer">Metallb</a>. Metallb allows you to use the LoadBalancer service type and expose your service outside of the cluster network when running kubernetes outside a hosted platform, i.e., local test cluster.</p>

<p>To use Metallb, you must provide a pool of ip addresses the you can use on your pod network.
First create a config map with your pod network ip range --</p>

<pre><code>apiVersion: v1
kind: ConfigMap
metadata:
  namespace: metallb-system
  name: config
data:
  config: |
    address-pools:
    - name: default
      protocol: layer2
      addresses:
      - 192.168.1.240-192.168.1.250

</code></pre>

<p>Then add that config map to your cluster.</p>

<pre><code>kubectl apply -f metallb-config.yaml
</code></pre>

<p>Finally add the metallb controller to your cluster</p>

<pre><code>kubectl apply -f https://raw.githubusercontent.com/google/metallb/v0.8.3/manifests/metallb.yaml

</code></pre>

<p>Now you should be able to expose your service.</p>

<pre><code>kubectl expose deployment name-of-deployment --type=LoadBalancer --name=name-of-service
</code></pre>
