使用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 Chart和dask-kubernetes
是两个单独的项目,它们以不同的方式工作。它们不兼容。
如果您使用的Jupyter Notebook是作为Helm Chart的一部分创建的,那么一切都已经为您配置好了,您可以使用默认选项创建一个Dask客户端。
from distributed import Client
client = Client()
如果要使用其他Python环境,例如本地计算机上的环境,则必须指定调度程序的远程地址。这将取决于您如何配置Helm Chart。
例如,如果您通过负载平衡器公开了调度程序,则需要将客户端指向它。
from distributed import Client
client = Client('tcp://<load balancer ip>:8786')
如果您获得Helm Chart部署的状态,它将在打印的注释中显示有关如何连接到调度程序的信息。
helm status <depoyment name>
关于python - 连接到现有的Kubernetes Dask集群,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60674723/