首页 > 解决方案 > GKE 上的 dask-kubernetes 零工人

问题描述

菜鸟在这里。我想安装一个带有工作池的 Dask,该工作池可以根据当前需求增长和缩小。我按照零中的说明将 jupyterhub 安装在 GKE 上,然后浏览了 dask-kubernetes 的安装说明:https ://kubernetes.dask.org/en/latest/ 。

我最初遇到了一些权限问题,所以我创建了一个具有所有权限的服务帐户,并将我的 config.yaml 更改为使用这个服务帐户。这消除了权限问题,但是现在当我使用默认的 worker-spec.yml 运行这个脚本时,我没有得到任何工人:

cluster = KubeCluster.from_yaml('worker-spec.yml')
cluster.scale_up(4)  # specify number of nodes explicitly

client = distributed.Client(cluster)
client
Cluster

    Workers: 0
    Cores: 0
    Memory: 0 B

当我列出我的 pod 时,我看到很多工作人员处于待处理状态:

patrick_mineault@cloudshell:~ (neuron-264716)$ kubectl get pod --namespace jhub                                                                                                                   
NAME                          READY   STATUS    RESTARTS   AGE
dask-jovyan-24034fcc-22qw7w   0/1     Pending   0          45m
dask-jovyan-24034fcc-25h89q   0/1     Pending   0          45m
dask-jovyan-24034fcc-2bpt25   0/1     Pending   0          45m
dask-jovyan-24034fcc-2dthg6   0/1     Pending   0          45m
dask-jovyan-25b11132-52rn6k   0/1     Pending   0          26m
...

当我描述每个 pod 时,我看到内存不足,cpu 错误:

Events:
  Type     Reason            Age                 From               Message
  ----     ------            ----                ----               -------
  Warning  FailedScheduling  69s (x22 over 30m)  default-scheduler  0/1 nodes are available: 1 Insufficient cpu, 1 Insufficient memory.

我需要在 GKE 中手动创建一个新的自动缩放池吗?我现在只有一个池,即运行 jupyterlab 的池,并且该池已经完全提交。我不知道是什么配置导致 dask 弄清楚将工人放在哪个池中。

标签: daskdask-kubernetes

解决方案


我确实需要创建一个灵活、可扩展的工作池来托管工作人员——Pangeo 设置指南中有一个例子:https ://github.com/pangeo-data/pangeo/blob/master/gce/setup-guide /1_create_cluster.sh。这是相关的行:

gcloud container node-pools create worker-pool --zone=$ZONE --cluster=$CLUSTER_NAME \
    --machine-type=$WORKER_MACHINE_TYPE --preemptible --num-nodes=$MIN_WORKER_NODES

推荐阅读