Amazon web services `dask kubernetes的调度程序-AWS上的工作程序

Amazon web services `dask kubernetes的调度程序-AWS上的工作程序,amazon-web-services,kubernetes,dask,dask.distributed,dask-kubernetes,Amazon Web Services,Kubernetes,Dask,Dask.distributed,Dask Kubernetes,我一直在尝试使用kubernetes建立一个dask.distributed集群。设置kube集群本身非常简单,我目前面临的问题是无法让本地调度器连接到worker。工作人员可以连接到调度程序,但他们会在kube网络内公布一个地址,而在kube网络外运行的调度程序无法访问该地址 按照dask-kubernetes文档中的示例,我在AWS上运行了一个kube集群,并且(在单独的AWS机器上)使用本地dask.distributed调度程序启动了一个笔记本。调度程序在kube集群上启动了大量工作进程

我一直在尝试使用
kubernetes
建立一个
dask.distributed
集群。设置
kube
集群本身非常简单,我目前面临的问题是无法让本地调度器连接到worker。工作人员可以连接到调度程序,但他们会在
kube
网络内公布一个地址,而在
kube
网络外运行的调度程序无法访问该地址

按照
dask-kubernetes
文档中的示例,我在AWS上运行了一个
kube
集群,并且(在单独的AWS机器上)使用本地
dask.distributed
调度程序启动了一个
笔记本。调度程序在
kube
集群上启动了大量工作进程,但无法连接到所述工作进程,因为这些工作进程位于不同的网络上:内部
kube
网络

网络设置如下所示:

  • 运行在192.168.0.0/24上的笔记本服务器
  • kube
    192.168.0.0/24上的集群EC2实例
  • kube
    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“:尝试连接到时超时”tcp://100.96.2.4:40992'3.0 s后:connect()未及时完成

我不是在寻找我可以做的事情的列表,我是在寻找推荐的设置方法,特别是关于
dask.distributed

我使用
kops
设置
kube
集群


我通常在kubernetes集群中使用dask kubernetes,但显然这并不适合所有人

网络可以变化。我猜默认情况下选择的IP地址对Kubernetes网络不可见。如果您确实有工作人员可以连接的地址,则可以在
ip=
关键字参数中指定该地址

cluster = KubeCluster(ip='scheduler-address-visible-to-workers')
如果您知道某个网络接口是可见的,则可以概括如下:

from distributed.utils import get_ip_interface
ip = get_ip_interface('eth0')  # replace eth0 with your visible network interface
在基于UNIX的系统上,通常可以使用
ifconfig
命令找到合适的接口列表。您可以在该列表中查找与您在workers上看到的地址相似的地址


如果这两个都不可能,那么我建议在

上提出一个问题,连接到调度程序的工作程序没有问题,这就是
cluster=KubeCluster(ip='scheduler-address-visible-to-workers')
似乎可以解决的问题。调度程序无法连接到工作进程,因为工作进程在
kube
网络
100.64.0.0/16
内公布地址。因此,我猜解决方案是在
kube
网络内运行
KubeCluster
?在kube网络内运行肯定会起作用。如果您认为支持用户在集群之外启动KubeCluster的情况很重要,那么我建议您提出一个问题。