Изучение 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.