Запуск контейнера для Data Science в кластере Kubernetes

По этой инструкции вы сможете запустить в кластере Kubernetes контейнер с предустановленными инструментами для машинного обучения и запустить в нем сервис Jupyter Notebook.

Список пакетов в контейнере:

Контейнер может быть использован для обучения и инференса моделей при разработке приложений и работе с данными.

Создание кластера и подготовка к работе

Для создания кластера:

  1. В панели управления выберите Облачная платформа — Kubernetes.
  2. Создайте кластер, следуя инструкции.
  3. Для комфортной работы с контейнером мы рекомендуем выбрать конфигурацию не менее 4 vCPU, 8 ГБ RAM, 20 ГБ SSD.

    Примечание: системные требования могут меняться в зависимости от исполняемых скриптов.

  4. Дождитесь, когда статус кластера станет Active.

  5. Выберите созданный кластер, откройте вкладку Настройки.

  6. Нажмите кнопку Скачать kubeconfig и сохраните YAML-файл с конфигурацией.

  7. Задайте ему удобное имя, например 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

Запуск контейнера

Для запуска контейнера:

  1. Скачайте YAML-файл с конфигурацией деплоймента.
  2. Запустите контейнер командой:

    kubectl apply -f selectel-ml.yaml
  3. Команда принята:

    deployment.apps/selectel-ml created
  4. Проверьте статус контейнера командой:

    kubectl get pod -w
  5. Сначала будет выведен статус ContainerCreating:

    NAME         READY     STATUS              RESTARTS    AGE
    selectel-ml  0/1       ContainerCreating   0           10s

    Для выхода из режима просмотра нажмите Ctrl+C.

  6. Дождитесь появления статуса Running, он будет означать, что контейнер создан и запущен. Это может занять несколько минут:

    selectel-ml	1/1	Running

Запуск Jupyter Notebook

Для запуска Jupyter Notebook:

  1. Откройте порт, чтобы иметь доступ к сервису:

    kubectl expose deployment selectel-ml --type=LoadBalancer --name=my-service
  2. Команда принята:

    service/my-service exposed
  3. Чтобы получить порт для подключения к серверу Jupyter, выполните команду:

    kubectl get services
  4. В ответе должно быть:

    NAME       TYPE          CLUSTER-IP      EXTERNAL-IP     PORT(S)         AGE
    my-service LoadBalancer  10.100.90.86    203.0.113.1     8888:31779/TCP  30s
  5. В адресной строке браузера введите адрес из EXTERNAL-IP и номер порта из PORT(S), например: 203.0.113.1:8888. Если в EXTERNAL-IP отображается <pending>, выполните команду kubectl get services через несколько минут.

  6. В открывшемся веб-интерфейсе Jupyter Notebook введите пароль по умолчанию: 9lG0eXCevt.

О способах смены пароля можно прочитать в документации Jupyter Notebook.

Работа с контейнером через консоль

Чтобы работать с контейнером через консоль, выполните команду:

kubectl exec -it [pod name] /bin/bash