从外部GCP访问内部负载平衡器(调度程序)

时间:2019-01-07 03:27:55

标签: kubernetes google-cloud-platform dask jupyterhub kubernetes-helm

我们的结构如下:

  • 项目A-定义和管理一个共享的VPC,所有项目都是该成员的成员
  • 项目B-在GKE上运行Jupyterhub
  • 项目C / D / E ...-在GKE上运行达人

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的关键)。

如果需要,我可以提供更多信息,但我仍在学习很多这些概念,因此,如果有任何不清楚的地方,请告诉我。

谢谢!

0 个答案:

没有答案