使用Helm,我创建了一个Dask集群
NAME READY STATUS RESTARTS AGE
dask01-jupyter-aaa-aaaa 1/1 Running 0 3d19h
dask01-scheduler-bbb-bbbb 1/1 Running 0 3d19h
dask01-worker-ccc-cccc 1/1 Running 0 3d19h
dask01-worker-ddd-dddd 1/1 Running 0 3d19h
dask01-worker-eee-eeee 1/1 Running 0 3d19h
我可以运行基本的Dask工作负载
import dask.array as da
array = da.ones((1000, 1000, 1000), chunks=(100, 100, 10))
现在,我想以某种方式将其连接到客户端:
from dask import distributed
cluster = None # TODO: configure KubeCluster somehow https://kubernetes.dask.org/en/latest/
client = distributed.Client(cluster)
如果我想launch a cluster,这是可行的:
from dask_kubernetes import KubeCluster
cluster = KubeCluster.from_yaml('worker-spec.yml')
但如何连接到现有集群
如果您已经安装了Dask-Helm包,那么可以使用} 来过滤此命令的输出,并仅检索Dask调度程序服务(将命名为
kubectl
检索要传递给distributed.Client
的TCP连接地址。例如,如果您选择使用dask-abc
分发的头盔发布名称。在helm install
-请参见here-设置集群时,您可以跟随Dask Helm and Kubernetes docs并使用kubectl get services
和^{dask-abc-scheduler
)的IP地址Here是使用
kubectl get pods
和jsonpath
来获取POD名称的类似示例(请参见以pods=$(
开头的行)。您必须使用watch
标志等待服务的IP地址可用(请参阅here中的注释部分)然后,上面打印的
dask_scheduler
地址可以在Python代码中传递给distributed.Client()
的url中使用Dask-Helm图表和
dask-kubernetes
是两个以不同方式工作的独立项目。它们不能兼容在一起如果您使用的是Jupyter笔记本,它是作为Helm图表的一部分创建的,那么一切都已经为您配置好了,您可以使用默认选项创建Dask客户端
如果希望使用不同的Python环境,例如本地计算机上的环境,则必须指定调度程序的远程地址。这取决于您如何配置舵图
例如,如果您通过负载平衡器公开了调度程序,则需要将客户端指向它
如果您获得舵图部署的状态,它将在打印的注释中显示有关如何连接到调度程序的信息
相关问题 更多 >
编程相关推荐