从kubernetes部署jupyter

时间:2018-04-02 17:10:15

标签: kubernetes jupyter-notebook

我正在尝试从Kubernetes部署jupyter notebook;但是,当我启动jupyter并打印出本地主机链接时,我无法在计算机上打开它,因为它是“本地主机”。因此,它需要在容器内打开。

但是,我无法为kubernetes找到任何类型的GUI桌面,我不确定如何打开浏览器来启动链接。我看到了一些关于minikube的事情。有没有办法在不使用minikube的情况下做到这一点?

我尝试在没有minikube的情况下安装的原因是因为minikube需要hyper V而且我的Windows 10 Home与hyper V不兼容。

1 个答案:

答案 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