我正在尝试从Kubernetes部署jupyter notebook
;但是,当我启动jupyter
并打印出本地主机链接时,我无法在计算机上打开它,因为它是“本地主机”。因此,它需要在容器内打开。
但是,我无法为kubernetes找到任何类型的GUI桌面,我不确定如何打开浏览器来启动链接。我看到了一些关于minikube的事情。有没有办法在不使用minikube的情况下做到这一点?
我尝试在没有minikube的情况下安装的原因是因为minikube需要hyper V而且我的Windows 10 Home与hyper V不兼容。
答案 0 :(得分:2)
访问Pod中应用程序的最常用方法是使用Service。
创建后,将为Service对象分配唯一的IP地址(ClusterIP),该地址在Service对象的整个生命周期内保持不变。 Pod可以使用此ClusterIP和端口访问具有与Service选择器匹配的标签的pod子集。当几个pod匹配时,Service会通过循环原则选择其中一个作为目标。
例如:
您可以使用kubectl expose:
为2个nginx副本创建服务$ kubectl expose deployment/my-nginx
service "my-nginx" exposed
这相当于kubectl create -f nginx-svc.yaml
将nginx-svc.yaml内容作为:
apiVersion: v1
kind: Service
metadata:
name: my-nginx
labels:
run: my-nginx
spec:
ports:
- port: 80
protocol: TCP
selector:
run: my-nginx
如何查看您的服务:
$ kubectl get svc my-nginx
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
my-nginx 10.0.162.149 <none> 80/TCP 21s
在应用程序的某些部分,您可能希望将Service公开到外部IP地址。 Kubernetes支持两种方式:NodePorts和LoadBalancers。
NodePort模式在所有群集节点上保留一个端口,并将流入此端口的流量转发到与选择器匹配的pod。
在LoadBalancer模式下,Service会创建云负载均衡器,并将流量从负载均衡器转发到与选择器匹配的Pod。
您可以在文档Connecting Applications with Services
为避免手动创建所有这些对象,可以使用helm基于特定应用程序的模板生成和运行对象。这是jupiter notebook的helm存储库:
https://github.com/UNINETT/helm-charts
Kubernetes的WebUI名为Dashboard。默认情况下它不会部署,但在您需要时可以轻松部署。
要部署仪表板,请执行以下命令:
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml
要从本地工作站访问仪表板,您必须为Kubernetes群集创建安全通道。运行以下命令:
$ kubectl proxy
现在访问Dashboard:
http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/。
要了解如何创建示例用户并登录,请按照创建sample user guide进行操作。
由于1.7版Dashboard默认情况下具有最小权限集,因此只能通过HTTPS访问。 Access Control guide可以帮助您扩展用户权限。
如果您受操作系统版本限制,可以使用免费的Oracle VirtualBox for minikube。