dask-kubernetes нулевые рабочие на GKE

Нуб здесь. Я хочу установить 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

Когда я перечисляю свои поды, я вижу много рабочих в состоянии ожидания:

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
...

И когда я описываю каждый модуль, я вижу, что недостаточно памяти, ошибка процессора:

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 выяснить, в какой пул поместить рабочих.


person Patrick Mineault    schedule 12.01.2020    source источник
comment
Похоже, что в вашем пуле автомасштабирования недостаточно свободных ресурсов, чтобы можно было запланировать ваших рабочих. По умолчанию для файла worker-spec.yaml требуется два виртуальных ЦП и 6 ГБ ОЗУ на каждого рабочего. Если это недоступно на какой-либо машине в вашем пуле и ваш опрос увеличен до максимума, вы получите ошибки, указанные выше.   -  person Jacob Tomlinson    schedule 16.01.2020
comment
Спасибо - действительно, я обнаружил, что не было узлов, которые подходили бы для этих больших рабочих - мне пришлось создать для этого пул.   -  person Patrick Mineault    schedule 16.01.2020


Ответы (1)


Мне действительно нужно было создать гибкий масштабируемый пул рабочих для размещения рабочих - пример этого есть в руководстве по настройке 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
person Patrick Mineault    schedule 16.01.2020