Изучение Kubernetes в качестве инженера машинного обучения

Добро пожаловать во вторую часть серии Kubernetes для инженера машинного обучения, здесь мы обсудим компоненты Kubernetes, которые помогают в комплексном запуске приложений в Kubernetes.

Если вы не читали первую часть, посмотрите ее здесь. В первой части мы рассмотрели узлы Kubernetes и их характеристики. Давайте начнем с компонента Kubernetes.

Компоненты Кубернета

  • Стручок
  • Услуга
  • Вход
  • Секрет
  • Карта конфигурации
  • Объемы
  • Развертывание
  • StatefulSet

Что такое под?

  • Это наименьшая единица в Kubernetes, которая работает в узле (экземплярах).
  • Это абстракция над контейнерами.
  • В поде может быть несколько контейнеров.
  • Обычно один основной контейнер приложения работает в поде.
  • Каждый модуль имеет свой IP-адрес, который помогает ему взаимодействовать с другими модулями или службами.
  • Поды легко умирают, если приложение падает из-за нехватки ресурсов или по любой другой причине.
  • Поскольку модуль легко умирает и ему назначен IP-адрес. Это становится непоследовательным.
  • Чтобы преодолеть несоответствие, существует отдельный компонент под названием "Сервис".

Что такое услуга?

  • Это помогает прикрепить статические/постоянные IP-адреса к модулю.
  • Жизненный цикл модуля не зависит от службы, поэтому даже если модуль умирает, это не влияет на службу и IP-адрес.
  • Это помогает в общении между модулями.
  • Если узел выходит из строя, приложение appl. имеет время простоя. Чтобы избежать этого, мы можем создать реплику узла, который также подключен к Сервису с постоянным IP-адресом.
  • Сервис также действует как балансировщик нагрузки, он направляет запрос в зависимости от доступности ресурсов в узле.

Что такое Ингресс?

  • Чтобы сделать приложение, работающее в модуле, доступным для внешнего мира, требуется компонент Ingress.
  • Запрос от пользователя к приложению, работающему в Kubernetes, сначала поступает в Ingress, затем в Service и, наконец, достигает модуля.

В Kubernetes для установки различных параметров, таких как db_username, db_password и других переменных среды, Kubernetes предоставляет два компонента configMap и secret.

Секрет

  • Как следует из названия, он используется для хранения секретов, таких как имена пользователей, пароли, ключи и т. д.
  • Он закодирован в base64.
  • Он подключен к стручкам.

Карта конфигурации

  • Он управляет внешней конфигурацией приложения.
  • Он подключен к Pod, так что Pod может получить доступ к деталям конфигурации из ConfigMap.
  • Это помогает при изменении конфигурации, потому что нет необходимости пересобирать образ докера.
  • ConfigMap нельзя использовать для хранения имени пользователя, пароля или любой другой конфиденциальной информации.

Объемы

  • Действует как хранилище данных в K8s.
  • Поскольку поды уничтожаются, тома помогают сохранять данные.
  • Он подключает физическое хранилище (жесткий диск) и облако к Pod внутри или за пределами кластера.
  • K8s не управляет сохранением данных самостоятельно.

Развертывание

  • Это абстракция над модулями.
  • Чтобы создать реплику модуля, мы не создаем модуль явно. Но мы определяем план модуля, например количество реплик и т. д. Этот план называется развертыванием.
  • Мы не можем создать развертывание базы данных, что означает, что мы не можем реплицировать БД, потому что у базы данных есть состояние. Нужно знать, какой pod пишет в БД, а какой читает, что приводит к несогласованности данных.

StatefulSet

  • Он используется для репликации служб типа базы данных.
  • MongoDB, MySql и подобные сервисы должны реплицироваться с помощью statefulSet.
  • Развернуть statefulset непросто.
  • Обычно базы данных размещаются за пределами кластера K8s, и в K8s развертываются только приложения без сохранения состояния.

В следующей статье мы начнем с того, как настроить кластер K8s.

Если вы считаете эту статью полезной, подпишитесь на меня и свяжитесь со мной, чтобы узнать больше о MLOps и ML.

Youtube и LinkedIn