我一直在尝试使用 kubernetes
设置 dask.distributed
群集 . 设置 kube
集群本身非常简单,我目前正在努力解决的问题是我无法让本地调度程序连接到worker . 工作人员可以连接到调度程序,但是他们在 kube
网络内通告了一个地址,该地址是在 kube
网络外部运行的调度程序无法访问的 .
根据 dask-kubernetes
docs中的示例,我在AWS上运行了一个 kube
集群,并且(在单独的AWS机器上)启动了 notebook
与本地 dask.distributed
调度程序 . 调度程序在 kube
集群上启动了许多工作程序,但它无法连接到所述工作程序,因为这些工作程序位于不同的网络上:内部网络 .
网络设置如下所示:
-
笔记本服务器运行在192.168.0.0/24上
-
kube
群集EC2实例也在192.168.0.0/24上
169kube
pods on 100.64.0.0/16
dask
调度程序在 192.168.0.0/24
上运行,但 dask
工作程序在 100.64.0.0/16
上运行 - 如何连接这两个?我是否应该在 kube
pod中运行调度程序,编辑路由表,尝试找出主机上工作人员的IP地址?
工作人员能够连接到调度程序,但在调度程序中,我收到表单错误
distributed.scheduler - 错误 - 无法连接到工作人员'tcp://100.96.2.4:40992':尝试在3.0 s后连接到'tcp://100.96.2.4:40992'超时:connect()didn'及时完成
我不是在寻找可以做的事情列表,我正在寻找建议的方法来设置它,特别是与 dask.distributed
有关 .
我使用 kops
设置了 kube
集群 .
1 回答
我通常在Kubernetes集群中使用dask-kubernetes,但显然这对每个人来说并不理想 .
网络可以变化 . 我的猜测是,Kubernetes网络看不到默认选择的IP地址 . 如果您有一个工作人员可以连接的地址,您可以在
ip=
关键字参数中指定它 .如果有一个您知道可见的网络接口,那么您可以按如下方式进行概括:
在基于UNIX的系统上,通常可以使用
ifconfig
命令找到合适的接口列表 . 您可以在该列表中查找与您在工作人员上看到的地址类似的地址 .如果这些都不可能,那么我建议在https://github.com/dask/dask-kubernetes/issues/new提出问题