Devops: развернуть небольшой кластер для data science

Цена договорная
21 января 2020, 14:51 • 4 отклика • 67 просмотров
Общая задача: нужен легко масштабируемый и дешевый кластер для работы с данными в python. Стэк - pandas/dask/xgboost.

Use case - 80% времени тихий data science небольшой группой, 20% времени вычисления, требующие много CPU и хорошо поддающиеся параллелизации. В реальности вряд ли нам потребуется больше 80 CPU в пике, что примерно равно 10 виртуалкам, объединенным в кластер, и 3 машин в спокойном режиме. Хотим иметь систему, позволяющую оптимально расходовать деньги на мощности и быстро масштабироваться как вверх, так и вниз.

Мы думаем, что хотим построить все на Hetzner cloud + Kubernetes + пачке скриптов для масштабирования облака в зависимости от текущей нагрузки, но открыты к более рациональным предложениям, если Вы знаете, что есть путь легче/дешевле.

Как мы видим нужный сетап:
1. Создать и настроить кастомный образ Ubuntu, из которого будут подниматься все остальные:
- две группы пользователей, sudo и обычные
- Anaconda, python 3.7, некий набор пакетов в ней
- доступ через ssh/mosh
- tmux для всех пользователей с простеньким конфигом

2. Поднять 3 машины в Hetzner cloud, добавить к ним shared диск для всех.

3. Поднять Kubernetes. Придумать и рассказать нам, как его легко масштабировать вверх-вниз и как отслеживать его состояние.

4. Настроить JupyterHub и Dask Distributed поверх Kubernetes.

5. Настроить nginx и вывести на субдомены доступ к web dashboard даска и jupyter hub, настроить SSL/https и обеспечить базовую безопасность доступа (в идеале не ходить дальше private keys для ssh, но как и в основной задаче, мы рассчитываем, что исполнитель сам предложит хорошее решение и расскажет нам, почему оно хорошее и удобное :))

Мы рассчитываем получить предложение по бюджету в часах/деньгах от исполнителя. Предполагаем, что при понимании процесса исполнителем это не должно занимать больше 20 часов, готовы принять аргументированное расширение бюджета.