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的情况很重要,那么我建议您提出一个问题。