<p>I have a bare metal Kubernetes (1 master and 3 nodes) and using metallb to provide load-balancing.<br>
I also have Jupyterhub and nginx-ingress installed as services.</p>

<p><strong>nginx-ingress:</strong></p>

<pre><code>NAME                            TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)                      AGE
nginx-ingress-controller        LoadBalancer   10.108.54.171   192.168.1.240   80:31463/TCP,443:30231/TCP   5m11s
nginx-ingress-default-backend   ClusterIP      10.98.47.19     &lt;none&gt;          80/TCP                       5m11s
</code></pre>

<p><strong>Jupyterhub</strong>  </p>

<pre><code>NAME           TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)                      AGE
proxy-public   LoadBalancer   10.102.251.6    192.168.1.242   80:32691/TCP,443:31737/TCP   8h
</code></pre>

<p>I can access the jupyterhub from the external IP BUT cannot access it thru the nginx-ingress</p>

<p><strong>nginx-ingress config.yaml</strong></p>

<pre><code>apiVersion: extensions/v1beta1
ingress
     enabled: true
     hosts:
kind: Ingress
metadata:
     annotations:
        kubernetes.io/ingress.class: nginx
     name: myingress
     namespace: default
rbac:
   create: true
spec:
  rules:
  - host: example.com
    http:
      paths:
      - backend:
        serviceName: jhub
        servicePort: 80
      path: /classes
</code></pre>

<p>My question is, how do I access the jupyterhub (proxy-public) via nginx-ingress</p>

ChrisJ
<p>The <code>proxy-public</code> backend service should be of type ClusterIP instead of type LoadBalancer just like the <code>nginx-ingress-default-backend</code> service. The service name in ingress should be <code>proxy-public</code> instead of <code>jhub</code>.</p>

<p>You should be able to access it via <code>http://192.168.1.240/classes</code></p>
