I followed the instructions to install binderhub. I use kubeadm on a local server. After the installation I got two load balancer pods, both exposing the same port
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
proxy-api ClusterIP 10.43.228.61 <none> 8001/TCP 10m
hub ClusterIP 10.43.210.157 <none> 8081/TCP 10m
binder LoadBalancer 10.43.136.35 XXX 80:30915/TCP 10m
proxy-public LoadBalancer 10.43.119.96 XXX 80:30953/TCP 10m
Is this the intended result?
That sounds correct. BinderHub (
binder service in your output) handles the building of user environments, before handing over to JupyterHub (
proxy-public service in your output) to launch and manage the pod after it’s built, so they can be on different domains.
If you want them on the same domain you could look into setting up an ingress instead.
But, how can both bind port 80 to the same external ip? I’d expect binderhub listening on the external ip and port 80 and handing over to jupyter using at different port or a different ip.
That’s the usual setup. However since they’re both HTTP services you can setup a Kubernetes ingress under a single domain and route traffic to the two services based on a URL path prefix. This is obviously a more advanced setup, so in general it’s best to stick with the default.