<p>I am not being able to get Minikube Nginx Ingress running on my local machine using minikube. It just times out.
I followed <a href="https://kubernetes.io/docs/tasks/access-application-cluster/ingress-minikube/" rel="nofollow noreferrer">this</a> tutorial and <a href="https://www.digitalocean.com/community/tutorials/how-to-set-up-an-nginx-ingress-on-digitalocean-kubernetes-using-helm" rel="nofollow noreferrer">this one</a> also.</p>

<p>Minikube version: </p>

<pre><code>v1.8.1 (commit cbda04cf6bbe65e987ae52bb393c10099ab62014)
</code></pre>

<p>Cluster info:</p>

<pre><code>// Client Version: 
{
    Major: "1",
    Minor: "17",
    GitVersion: "v1.17.1",
    GitCommit: "d224476cd0730baca2b6e357d144171ed74192d6",
    GitTreeState: "clean",
    BuildDate: "2020-01-14T21:04:32Z",
    GoVersion: "go1.13.5",
    Compiler: "gc",
    Platform: "windows/amd64"
}
// Server Version: version.Info
{
    Major: "1",
    Minor: "17",
    GitVersion: "v1.17.3",
    GitCommit: "06ad960bfd03b39c8310aaf92d1e7c12ce618213",
    GitTreeState: "clean",
    BuildDate: "2020-02-11T18:07:13Z",
    GoVersion: "go1.13.6",
    Compiler: "gc",
    Platform: "linux/amd64"
}
</code></pre>

<p>There must be something wrong with my local environment, but I don't know how to debug it. This is how my current environment looks like so far:</p>

<pre><code>apiVersion: v1
kind: Service
metadata:
  name: hello-kubernetes-first
spec:
  type: ClusterIP
  ports:
  - port: 80
    targetPort: 8080
    name: http
  selector:
    app: hello-kubernetes-first
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello-kubernetes-first
spec:
  replicas: 3
  selector:
    matchLabels:
      app: hello-kubernetes-first
  template:
    metadata:
      labels:
        app: hello-kubernetes-first
    spec:
      containers:
      - name: hello-kubernetes
        image: paulbouwer/hello-kubernetes:1.5
        ports:
        - containerPort: 8080
        env:
        - name: MESSAGE
          value: Hello from the first deployment!
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: hello-kubernetes-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
spec:
  rules:
  - host: hw1.com
    http:
      paths:
      - backend:
          serviceName: hello-kubernetes-first
          servicePort: 80
</code></pre>

<p>System pods</p>

<pre><code>~\Desktop\kubernetes&gt; kubectl get pods -n kube-system                                                                                                                                                              NAME                                        READY   STATUS    RESTARTS   AGE
coredns-6955765f44-8zxgw                    1/1     Running   6          12d
coredns-6955765f44-jr9xq                    1/1     Running   7          12d
etcd-m01                                    1/1     Running   1          3h48m
kube-apiserver-m01                          1/1     Running   1          3h48m
kube-controller-manager-m01                 1/1     Running   597        12d
kube-proxy-mnhcl                            1/1     Running   7          12d
kube-scheduler-m01                          1/1     Running   596        12d
nginx-ingress-controller-6fc5bcc8c9-z7m2b   1/1     Running   6          27h
storage-provisioner                         1/1     Running   11         12d
</code></pre>

<p>C:\Windows\System32\drivers\etc\hosts</p>

<pre><code>172.17.186.182 hw1.com
</code></pre>

<p>minikube IP</p>

<pre><code>~\Desktop\kubernetes&gt; minikube IP
172.17.186.182
</code></pre>

<p>You are using <code>ClusterIP</code> in your <a href="https://kubernetes.io/docs/concepts/services-networking/service/" rel="nofollow noreferrer">Service</a> definition and from the looks of your output, you are running minikube on Windows.</p>

<p>From your Windows CMD you won't be able to get to a <code>ClusterIP</code> since it runs in a VM (Virtual Machine). You can confirm this by running:</p>

<pre><code>minikube ssh
</code></pre>

<p>Then in the VM:</p>

<pre><code>curl 172.17.186.182
</code></pre>

<p>You can try exposing your service using a <a href="https://kubernetes.io/docs/concepts/services-networking/service/#nodeport" rel="nofollow noreferrer"><code>NodePort</code></a> on the VM. This will be a port externally available from your VM, but it won't be 80 as Kubernetes allocates the configurable range of <code>30000-32767</code>. You could manually change this in the <a href="https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/" rel="nofollow noreferrer">kube-apiserver</a> using the <code>--service-node-port-range portRange</code> option if you'd like.</p>

<pre><code>apiVersion: v1
kind: Service
metadata:
  name: hello-kubernetes-first
spec:
  type: NodePort
  ports:
  - port: 80
    targetPort: 8080
    name: http
  selector:
    app: hello-kubernetes-first
</code></pre>

<p>Get the <code>NodePort</code> from your Windows CMD (example):</p>

<pre><code>kubectl get svc
NAME                     TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
hello-kubernetes-first   NodePort    10.102.234.222   &lt;none&gt;        80:31181/TCP   3m51s
kubernetes               ClusterIP   10.96.0.1        &lt;none&gt;        443/TCP        138d
</code></pre>

<p>The NodePort above is <code>31181</code></p>

<p>Next, you have to use the IP for eth0 in your VM:</p>

<pre><code>minikube ssh
$ ifconfig eth0
</code></pre>

<p>Then back on your Windows CMD:</p>

<pre><code>curl &lt;ip-from-eth0-above&gt;:31181
</code></pre>
