通过以太网远程访问JupyterHub,入口位于Kubernetes

通过以太网远程访问JupyterHub,入口位于Kubernetes,kubernetes,kubernetes-ingress,nginx-ingress,jupyterhub,Kubernetes,Kubernetes Ingress,Nginx Ingress,Jupyterhub,上下文 我在裸机服务器(4个节点)上安装了Kubernetes,并将Zero部署到JupyterHub。 这很好用;我可以从主节点正确访问集线器 现在我想通过以太网从外部计算机访问服务器上的集线器。因此,我遵循并安装了,以便为我的代理公共服务(正确设置)提供外部IP。 此外,我安装是为了能够进行入口,这也成功地获得了一个外部IP(小提示:使用Helm图表;当应用其他建议的步骤时,我无法运行服务) 因为我在弄清楚如何进入时遇到了一些困难,下面是一个示例: kubectl apply-f ingre

上下文

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

现在我想通过以太网从外部计算机访问服务器上的集线器。因此,我遵循并安装了,以便为我的代理公共服务(正确设置)提供外部IP。
此外,我安装是为了能够进行入口,这也成功地获得了一个外部IP(小提示:使用Helm图表;当应用其他建议的步骤时,我无法运行服务)

因为我在弄清楚如何进入时遇到了一些困难,下面是一个示例:

kubectl apply-f ingres.yaml——名称空间jhub
#ingress.yaml:
#apiVersion:networking.k8s.io/v1beta1
#种类:入口
#元数据:
#名称:jupyterhub ingress
#注释:
#nginx.ingres.kubernetes.io/rewrite-target://$1
#规格:
#规则:
#-主机:jupyterhub.cluster
#http:
#路径:
#-路径:/
#后端:
#serviceName:proxy public
#服务端口:80
无论如何,我无法打开public提供的外部IP代理(意味着我正在浏览器中插入外部IP)


问题


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

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


如何建立此ssh连接

首先,获取代理公共服务器的外部IP地址:

$:kubectl获取服务--名称空间jhub
名称类型CLUSTER-IP外部IP端口年龄
集线器组IP 10.99.241.72 8081/TCP 95m
代理api ClusterIP 10.107.175.27 8001/TCP 95m
代理公共负载平衡器10.102.171.162 192.168.1.240 80:31976/TCP,443:32568/TCP 95m
注意:外部IP的范围在我的MetalLB配置的第2层中定义

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

$sshpi@10.10.10.2-L 8000:192.168.1.240:80
#-L打开本地主机连接
# pi@10.10.10.2使用用户pi将我登录到第二个节点
注1:在描述服务和查看各自的规范端口时,还可以看到
localhost:8000
配置为http代理公共端口的targetPort(您也可以在此处获得https的设置):

种类:服务
版本:v1
元数据:
名称:代理公共
名称空间:jhub
...
规格:
端口:
-名称:http
协议:TCP
港口:80
目标港:8000
节点端口:31976
-名称:https
...

最后,键入
http://localhost:8000/
进入您的浏览器-瞧,您可以进入JupyterHub登录页面

如果您想远程访问,为什么要使用localhost?Localhost是本地环回地址127.0.0.1的事实上的标准(DNS)名称,不能从(本地)主机本身的外部访问。您是指代理公共-服务描述中的端口和目标端口吗?老实说,这些是部署官方中心时的标准设置,我没有更改。。我应该改变端口和目标端口吗?如果您指的是localhost ssh:这只是隧道到节点localhost,在那里可以访问
192.168.1.240:80