kubernetes - 通过 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;我错过了什么?
解决方案
我错过了这可以通过与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 登录页面!
推荐阅读
- c# - 是否可以拉出已注册到 firebase 的用户
- erlang - 尝试使用计时器执行函数,但编译器说该函数未使用
- nativescript - 在 iOS 下得到以下构建错误
- r - 在 ggplot barplot 中为多个条添加组标签
- css - div 的背景图像不会正确调整大小
- javascript - 无法使用 Vue.js 从 opendweathermap 获取天气数据
- jolt - JOLT 展平未命名的嵌套数组和拆分函数
- javascript - 如何在 CodeIgniter 的模板中组织代码?
- bash - 可以在 Bash 函数中本地更改 IFS 吗?
- sql-server - 一个 sql server 可以处理多少个 SQL 作业?