Я пытаюсь развернуть даск-приложение в Kubernetes/Azure. У меня есть сервер приложений Flask, который является клиентом планировщика/работников Dask.
Я установил оператора Dask, как описано здесь:
helm install --repo https://helm.dask.org --create-namespace -n dask-operator --generate-name dask-kubernetes-operator
Это создало планировщик и рабочие модули, у меня они работают в Kubernetes без ошибок.
Для приложения Flask у меня есть образ Docker со следующим файлом Dockerfile:
FROM daskdev/dask
RUN apt-get -y install python3-pip
RUN pip3 install flask
RUN pip3 install gunicorn
RUN pip3 install "dask[complete]"
RUN pip3 install "dask[distributed]" --upgrade
RUN pip3 install "dask-ml[complete]"
Всякий раз, когда я пытаюсь запустить функцию в воркерах, используя интерфейс Client
, я получаю эту ошибку в модуле планировщика:
TypeError: update_graph() got an unexpected keyword argument 'graph_header'
Мне кажется, что образ Dask, используемый для запуска Flask, и установленный мной Dask Kubernetes несовместимы или не согласованы?
Как создать образ, включающий Dask для сервера Flask, который можно интегрировать с пакетом Dask Kubernetes?
Я запускаю Flask client.get_versions(check=True)
и вот что получаю:
{'scheduler': {'host': {'python': '3.8.15.final.0', 'python-bits': 64, 'OS': 'Linux', 'выпуск ОС': '5.4. 0-1105-azure», «машина»: «x86_64», «процессор»: «x86_64», «порядок байтов»: «маленький», «LC_ALL»: «C.UTF-8», «LANG»: «C. UTF-8'}, 'пакеты': {'python': '3.8.15.final.0', 'dask': '2023.1.0', 'распределенный': '2023.1.0', 'msgpack': ' 1.0.4», «cloudpickle»: «2.2.0», «торнадо»: «6.2», «toolz»: «0.12.0», «numpy»: «1.24.1», «панды»: «1.5. 2', 'lz4': '4.2.0'}}, 'рабочие': {'tcp://10.244.0.3:40749': {'хост': {'python': '3.8.15.final.0 ', 'python-bits': 64, 'ОС': 'Linux', 'выпуск ОС': '5.4.0-1105-azure', 'машина': 'x86_64', 'процессор': 'x86_64', 'byteorder': 'little', 'LC_ALL': 'C.UTF-8', 'LANG': 'C.UTF-8'}, 'packages': {'python': '3.8.15.final.0 ', 'dask': '2023.1.0', 'distributed': '2023.1.0', 'msgpack': '1.0.4', 'cloudpickle': '2.2.0', 'tornado': '6.2', 'toolz': '0.12.0', 'numpy': '1.24.1', 'панды': '1.5.2', 'lz4': '4.2.0'}}, 'tcp://10.244.0.4 :36757': {'хост': {'python': '3.8.15.final.0', 'биты python': 64, 'ОС': 'Linux', 'выпуск ОС': '5.4.0 -1105-azure», «машина»: «x86_64», «процессор»: «x86_64», «порядок байтов»: «маленький», «LC_ALL»: «C.UTF-8», «LANG»: «C.UTF -8'}, 'пакеты': {'python': '3.8.15.final.0', 'dask': '2023.1.0', 'распределенный': '2023.1.0', 'msgpack': '1.0 .4», «cloudpickle»: «2.2.0», «торнадо»: «6.2», «toolz»: «0.12.0», «numpy»: «1.24.1», «панды»: «1.5.2». ', 'lz4': '4.2.0'}}, 'tcp://10.244.1.7:40561': {'host': {'python': '3.8.15.final.0', 'python-bits ': 64, 'ОС': 'Linux', 'выпуск ОС': '5.4.0-1105-azure', 'машина': 'x86_64', 'процессор': 'x86_64', 'байтовый порядок': 'маленький ', 'LC_ALL': 'C.UTF-8', 'LANG': 'C.UTF-8'}, 'packages': {'python': '3.8.15.final.0', 'dask': «2023.1.0», «распространенный»: «2023.1.0», «msgpack»: «1.0.4», «cloudpickle»: «2.2.0», «торнадо»: «6.2», «toolz»: «0.12». .0", "numpy": "1.24.1", "панды": "1.5.2", "lz4": "4.2.0"}}}, "клиент": {'хост': {'python' : '3.8.16.final.0', 'биты python': 64, 'ОС': 'Linux', 'выпуск ОС': '5.4.0-1105-azure', 'машина': 'x86_64' , 'процессор': 'x86_64', 'байтовый порядок': 'маленький', 'LC_ALL': 'C.UTF-8', 'LANG': 'C.UTF-8'}, 'пакеты': {'python' : '3.8.16.final.0', 'dask': '2023.4.0', 'распределенный': '2023.4.0', 'msgpack': '1.0.5', 'cloudpickle': '2.2.1' , 'торнадо': '6.2', 'toolz': '0.12.0', 'numpy': '1.23.5', 'панды': '2.0.0', 'lz4': '4.3.2'}} } @ 2023-04-20 13:33:09.921545"}
Решено, просто заставил Dockerfile использовать версию 2023.1.0, которая устранила проблему и соответствовала версии оператора dask.
Спасибо за обмен вашего опыта. Это может помочь другим.