<p>I've set up a <code>minikube</code> cluster for development purpose inside a VM.<br />
I've deployed few services and an ingress controller (the minikube one) to be able to access it without using NodePorts.<br />
Inside my VM, I can access my services as usual with <code>curl http://hello-world.info</code> or another one. Everything works fine.</p>
<p>But when I'm outside of my VM, I can't access it even if I'm on the same network. I tried from my hosting server, from my laptop and outside with a VPN.<br />
The cluster IP is well listed in my addresses inside the VM (<code>ip a</code>), but not accessible outside of it (e.g: <code>ping xxx</code>).<br />
How can I access my cluster services on another machine inside the same network ?</p>
<p>My VM's IP is set to static (<code>ubuntu-server 20.XX.XX</code>) with netplan at <code>192.168.1.128</code> and my cluster IP is <code>192.168.49.2</code>. My DHCP server is allowed to distribute IPs only between <code>192.168.1.101-254</code>.</p>
<p>Thanks :).</p>

<p>Personally I haven't found a way to expose <code>minikube</code> instance with <code>--driver=docker</code> on <code>LAN</code>.</p>
<p>As a workaround to expose your <code>minikube</code> instance on <code>LAN</code> you can either <code>--driver</code>:</p>
<ul>
<li><code>--driver=virtualbox</code></li>
<li><code>--driver=none</code></li>
</ul>
<p>Being specific to the exposing your Kubernetes cluster to <code>LAN</code>, I would also consider checking out other Kubernetes solutions like (you could run them on bare-metal or run them in a vbox vm with <code>bridged</code> networking:</p>
<ul>
<li><a href="https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/" rel="nofollow noreferrer">kubeadm</a></li>
<li><a href="https://github.com/kubernetes-sigs/kubespray" rel="nofollow noreferrer">kubespray</a></li>
<li><a href="https://microk8s.io/" rel="nofollow noreferrer">microk8s</a></li>
</ul>
<hr />
<h3><code>--driver=virtualbox</code>:</h3>
<p>Citing part of my own answer some time ago:</p>
<blockquote>
<p>As I previously mentioned: When you create your <code>minikube</code> instance with Virtualbox you will create below network interfaces:</p>
<ul>
<li><code>NAT</code>-  interface which will allow your VM to access the Internet. This connection cannot be used to expose your services</li>
<li><code>Host-only-network-adapter</code> - interface created by your host which allows to communicate within the interface. It means that your host and other vm's with this particular adapter could connect with each other. It's designed for internal usage.</li>
</ul>
<p>You can read more about Virtualbox networking here:</p>
<ul>
<li><a href="https://www.virtualbox.org/manual/ch06.html" rel="nofollow noreferrer">Virtualbox.org: Virtual Networking</a></li>
</ul>
<p>I've managed to find a <strong>workaround</strong> to allow connections outside your laptop/pc to your <code>minikube</code> instance. You will need to change network interface in settings of your <code>minikube</code> instance from  <strong><code>Host-only-network-adapter</code></strong> to <strong><code>Bridged Adapter</code></strong> (2nd adapter). This will work as another device was connected to your physical network. Please make sure that this bridged adapter is used with Ethernet NIC. <code>Minikube</code> should change IP address to match the one used in your physical one.</p>
<blockquote>
<p>You will also need to change your <code>.kube/config</code> as it will have the old/wrong IP address!</p>
</blockquote>
<p>After that you should be able to connect to your <code>Ingress</code> resource by IP accessible in your physical network.</p>
<p>-- <em><a href="https://stackoverflow.com/questions/62559281/expose-kubernetes-cluster-to-internet/62697373#62697373">Stackoverflow.com: Answers:: Expose Kubernetes cluster to Internet</a></em></p>
</blockquote>
<hr />
<h3><code>--driver=none</code></h3>
<p>You can also run <code>minikube</code> with <code>--driver=none</code> but there are some caveats to this method which you can read more about by following this docs (tl;dr you are running your <code>minikube</code> directly on your host):</p>
<ul>
<li><em><a href="https://minikube.sigs.k8s.io/docs/drivers/none/" rel="nofollow noreferrer">Minikube.sigs.k8s.io: Docs: Drivers: None</a></em></li>
</ul>
<hr />
<p>Additional resources:</p>
<ul>
<li><em><a href="https://minikube.sigs.k8s.io/docs/drivers/" rel="nofollow noreferrer">Minikube.sigs.k8s.io: Docs: Drivers</a></em></li>
</ul>
