Запуск контейнера для Data Science в кластере Kubernetes
По этой инструкции вы сможете запустить в кластере Kubernetes контейнер с предустановленными инструментами для машинного обучения и запустить в нем сервис Jupyter Notebook.
Список пакетов в контейнере:
- PIP
- PyTorch
- TensorFlow
- Keras
- Anaconda
- Jupyter Notebook
- scikit-learn
- Numpy
- Scipy
- Pandas
- NLTK
- OpenCV
- Catboost
- XGBoost
- LightGBM
Контейнер может быть использован для обучения и инференса моделей при разработке приложений и работе с данными.
Создание кластера и подготовка к работе
Для создания кластера и его подготовке к работе в панели управления:
- Перейдите в раздел Kubernetes.
- Создайте кластер.
Для комфортной работы с контейнером мы рекомендуем выбрать конфигурацию с параметрами не менее 4 vCPU, 8 ГБ RAM, 20 ГБ SSD.
Примечание: системные требования могут меняться в зависимости от исполняемых скриптов.
Дождитесь, когда статус кластера станет Active.
Выберите созданный кластер, откройте вкладку Настройки.
Нажмите кнопку Скачать kubeconfig и сохраните YAML-файл с конфигурацией.
Задайте ему удобное имя, например
my-kube.yaml
.
Работа с кластером через консольный клиент
Установите kubectl — консольный клиент Kubernetes.
В консоли экспортируйте в переменную окружения путь к файлу my-kube.yaml
, скачанному на шаге 6:
export KUBECONFIG=my-kube.yaml
Чтобы убедиться, что настройка прошла успешно, обратитесь к кластеру командой:
kubectl get nodes
При корректной настройке будет получен ответ вида:
NAME STATUS ROLES AGE VERSION
your-node Ready <none> 2m01s v1.17.6
Запуск контейнера
Для запуска контейнера:
- Скачайте YAML-файл с конфигурацией деплоймента.
Запустите контейнер командой:
kubectl apply -f selectel-ml.yaml
Команда принята:
deployment.apps/selectel-ml created
Проверьте статус контейнера командой:
kubectl get pod -w
Сначала будет выведен статус
ContainerCreating
:NAME READY STATUS RESTARTS AGE selectel-ml 0/1 ContainerCreating 0 10s
Для выхода из режима просмотра нажмите Ctrl+C.
Дождитесь появления статуса
Running
, он будет означать, что контейнер создан и запущен. Это может занять несколько минут:selectel-ml 1/1 Running
Запуск Jupyter Notebook
Для запуска Jupyter Notebook:
Откройте порт, чтобы иметь доступ к сервису:
kubectl expose deployment selectel-ml --type=LoadBalancer --name=my-service
Команда принята:
service/my-service exposed
Чтобы получить порт для подключения к серверу Jupyter, выполните команду:
kubectl get services
В ответе должно быть:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE my-service LoadBalancer 10.100.90.86 203.0.113.1 8888:31779/TCP 30s
В адресной строке браузера введите адрес из
EXTERNAL-IP
и номер порта изPORT(S)
, например203.0.113.1:8888
. Если вEXTERNAL-IP
отображается<pending>
, выполните командуkubectl get services
через несколько минут.В открывшемся веб-интерфейсе Jupyter Notebook введите пароль по умолчанию:
9lG0eXCevt
.
О способах смены пароля можно прочитать в документации Jupyter Notebook.
Работа с контейнером через консоль
Чтобы работать с контейнером через консоль, выполните команду:
kubectl exec -it [pod name] /bin/bash