首页 > 解决方案 > 通过 Kubernetes 中的入口通过以太网远程访问 JupyterHub 零

问题描述

语境

我在裸机服务器(4 个节点)上安装了Kubernetes ,并将Zero to JupyterHub部署到它。这很好用;我可以从主节点正确访问集线器。

现在我想通过以太网从外部计算机访问服务器上的集线器。因此,我按照官方说明安装了MetalLB ,以便为我的代理公共服务(正确设置)提供外部 IP 。
此外,我安装了nginx-ingress-controller以便能够进行入口,这也成功获取了外部 IP(小提示:使用Helm -chart;应用其他推荐时我无法运行服务脚步)。

由于我在弄清楚如何进行此入口时遇到了一些麻烦,因此这里有一个示例:

kubectl apply -f ingress.yaml --namespace jhub

#ingress.yaml:
#apiVersion: networking.k8s.io/v1beta1
#kind: Ingress
#metadata:
#  name: jupyterhub-ingress
#  annotations:
#    nginx.ingress.kubernetes.io/rewrite-target: /$1
#spec:
#  rules:
#  - host: jupyterhub.cluster
#    http:
#      paths:
#      - path: /
#        backend:
#          serviceName: proxy-public
#          servicePort: 80

无论如何,我无法打开代理公共提供的外部 IP(这意味着我在浏览器中插入了外部 IP)。


问题

如何通过外部 IP 远程访问我的 JupyterHub;我错过了什么?

标签: kuberneteskubernetes-ingressnginx-ingressjupyterhub

解决方案


我错过了这可以通过与Kubernetes-Dashboard相同的方式实现:您必须从外部计算机建立一个开放的 ssh 连接(因此,打开一个隧道 ->隧道)。
当然,这不是我想到的“外部”访问,而是我的测试环境(可能还有你的)的有效且快速的解决方案。


如何建立这个 ssh-connect

首先,获取您的proxy-public的外部 IP 地址:

$: kubectl get services --namespace jhub
NAME           TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)                      AGE
hub            ClusterIP      10.99.241.72     <none>          8081/TCP                     95m
proxy-api      ClusterIP      10.107.175.27    <none>          8001/TCP                     95m
proxy-public   LoadBalancer   10.102.171.162   192.168.1.240   80:31976/TCP,443:32568/TCP   95m

注意:外部 IP 的范围是layer2在我的MetalLB -config 中定义的。

使用此信息(假设您使用的是 Linux),打开终端并使用以下命令:

$ ssh pi@10.10.10.2 -L 8000:192.168.1.240:80
# -L opens a localhost-connection
# pi@10.10.10.2 logs me into my second node with user pi

注意 1 :当您描述服务并查看规格各自的端口时,也可以看到使用httplocalhost:8000配置为proxy-public的targetPort (您也可以在那里获取 https 的设置):

kind: Service
apiVersion: v1
metadata:
  name: proxy-public
  namespace: jhub
  ...
spec:
  ports:
    - name: http
      protocol: TCP
      port: 80
      targetPort: 8000
      nodePort: 31976
    - name: https
...

最后,http://localhost:8000/在您的浏览器中输入 - 瞧,您将进入 JupyterHub 登录页面!


推荐阅读