我们的结构如下:
Jupyterhub和dask已使用Helm部署在集群上,其中大部分修改是通过Helm值图表应用的。
现在,通常,将Jupyter和dask放在同一集群上,利用dask调度程序非常容易。然后,使用Web浏览器访问调度程序的EXTERNAL-IP,即可轻松查看dask的Bokeh诊断视图。
在我们的案例中,群集位于另一个项目(在同一VPC内),因此,为了允许使用Jupyterhub(项目B)中的调度程序(项目C),我们需要修改dasch-scheduler以充当使用以下命令的内部负载均衡器:
kubectl annotate svc dask-scheduler cloud.google.com/load-balancer-type=Internal
我们现在能够利用项目B的dasch-scheduler,太好了!但是,问题在于,现在我们无法查看dasch-scheduler的Bokeh,因为EXTERNAL-IP(我们通常会用它查看Bokeh)已被此特殊的内部IP取代。
我觉得我应该可以公开一个外部IP并将其转发给调度程序,但是经过几天的试验,我没有任何运气。还值得注意的是JupyterLab的dask bokeh插件无法正常工作,这对我来说很奇怪,因为我们允许VPC内的流量,并且通常只是向该插件提供调度程序IP就可以了(笔记本显然是能够与dasch-scheduler对话,但看不到bokeh面板)。
当前的防火墙规则允许所有端口上的GKE IP范围和所有协议之间进行通信(这是允许Jupyterhub利用dask-scheduler的关键)。
如果需要,我可以提供更多信息,但我仍在学习很多这些概念,因此,如果有任何不清楚的地方,请告诉我。
谢谢!