Python 连接到现有Kubernetes Dask群集
使用,我创建了一个Dask集群Python 连接到现有Kubernetes Dask群集,python,kubernetes,dask,kubernetes-helm,dask-kubernetes,Python,Kubernetes,Dask,Kubernetes Helm,Dask Kubernetes,使用,我创建了一个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
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工作负载
将dask.array导入为da
数组=da.one((100010001000),块=(10010010))
现在,我想以某种方式将其连接到客户端:
来自dask导入的
集群=无#待办事项:以某种方式配置KubeClusterhttps://kubernetes.dask.org/en/latest/
客户端=分布式。客户端(群集)
如果我想:
来自dask_kubernetes import KubeCluster
集群=KubeCluster.from_yaml('worker-spec.yml'))
但是如何连接到现有集群?达斯克赫尔姆图和达斯克库伯内特斯图是两个以不同方式工作的独立项目。它们不能兼容在一起 如果您使用的是Jupyter笔记本,它是作为Helm图表的一部分创建的,那么一切都已经为您配置好了,您可以使用默认选项创建Dask客户端 来自分布式导入客户端的
client=client()
如果希望使用不同的Python环境,例如本地计算机上的环境,则必须指定调度程序的远程地址。这取决于您如何配置舵图
例如,如果您通过负载平衡器公开了调度程序,则需要将客户端指向它
来自分布式导入客户端的
client=client('tcp://:8786')
如果您获得舵图部署的状态,它将在打印的注释中显示有关如何连接到调度程序的信息
helm状态
如果您已经安装了Dask Helm软件包,则可以使用kubectl
检索要传递到分布式客户端的TCP连接地址。例如,如果您选择使用头盔发布名称dask abc
distributed。在helm install
-请参阅-设置集群时,您可以按照并使用kubectl get services
,以筛选此命令的输出,并仅检索Dask调度程序服务(将命名为Dask abc调度程序
)的IP地址
是使用kubectl get pods
和jsonpath
获取pods名称的类似示例(请参见以pods=$(
)开头的行)。您必须等待服务的IP地址变为可用,使用--watch
标志(请参见
$export RELEASE\u NAME=dask abc
#等待负载平衡器外部IP可用
$kubectl获取服务--等待$RELEASE\u NAME-scheduler
#获取Dask调度程序地址
$dask_调度程序=$(kubectl获取服务\
$RELEASE\u NAME-scheduler\
--output=jsonpath='{.status.loadBalancer.ingress[0].ip}')
$echo$dask_调度程序
然后,上面打印的dask_调度程序
地址可以在传递到Python代码中的distributed.Client()
的url中使用
客户端连接url=“tcp://:8786”
>client=distributed.client(客户端\连接\ url)
>打印(客户端)
.
.
.
.