<p>I'm currently using minikube and I'm trying to access my application by utilizing the <code>minikube tunnel</code> since the service type is <code>LoadBalancer</code>.</p>

<p>I'm able to obtain an external IP when I execute the <code>minikube tunnel</code>, however, when I try to check it on the browser it doesn't work. I've also tried Postman and curl, they both don't work.</p>

<p>To add to this, if I shell into the pod I can use curl and it does work. Furthermore, I executed <code>kubectl port-forward</code> and I was able to access my application through <strong>localhost</strong>.</p>

<p>Does anyone have any idea as to why I'm not being able to access my application even though everything seems to be running correctly?</p>

<p>Your service is probably bound to localhost. Minikube starts the cluster in a VM or docker (depending on the driver you are using) that is bound to an external IP, $(minikube ip).</p>
<p>When you are running a minikube tunnel you're tunneling from minikube cluster external IP to the internal IP of the load balancer, the LB service in Kubernete the External IP goes from &quot;Pending&quot; to an actual internal IP and something like this should work:</p>
<pre><code>curl -H 'Host: localhost' -v $(minikube ip)
</code></pre>
<p>However, it doesn't in the browser, since in the above command you are sending the request to the minikube's IP, not localhost. What I do for this to work is a ssh tunnel like this one:</p>
<pre><code>ssh -i $(minikube ssh-key) docker@$(minikube ip) -L 8008:localhost:80
</code></pre>
<p>This maps the LB listener in port 80, in minikube's cluster, to 8008 in localhost.  The external IP of the service remains pending but it works since the Kube controller can still find it. If you want to map port 80 then you will need to add sudo.</p>
