Что такое Kubernetes

Если вы следите за технологическими тенденциями, наукой о данных, искусственным интеллектом или машинным обучением, вы, вероятно, встречали термин Kubernetes (или K8s). Kubernetes — это платформа для оркестровки контейнеров с открытым исходным кодом, созданная Google. Название «Кубернетес» происходит от греческого языка и означает «рулевой» или «капитан». Но прежде чем мы поймем причину всех этих морских ссылок, мы должны сначала ответить на вопрос: что такое контейнеры?

Идея контейнеров взорвалась в 2013 году с созданием Docker. Их создание было мотивировано давней проблемой в разработке программного обеспечения — как заставить программное обеспечение работать надежно после переноса из одной среды в другую. Такие среды могут варьироваться от ноутбуков, серверов в старом добром частном центре обработки данных до виртуальных машин в облаке. Упаковка приложения в контейнер означает, что конечный результат его запуска в любой из этих сред будет согласованным (одинаковым).

Это особенно верно, поскольку технологические организации отходят от шаблонов монолитной архитектуры, таких как сервис-ориентированная архитектура (SOA), в пользу более слабосвязанных подходов к микросервисам.

Потребность в координаторах контейнеров

Контейнеры решают большую часть проблемы, но их недостаточно, потому что они более абстрактны, чем реальны. Чтобы получить рабочий продукт, нам все еще нужна среда выполнения контейнера — дополнительный уровень для координации и распределения соответствующих ресурсов для запущенных контейнеров. Чтобы решить эту проблему, люди из Docker создали containerd — среду выполнения контейнеров.

Так почему бы не использовать containerd?- вы, наверное, спрашиваете себя прямо сейчас. Да, вы можете запустить виртуальную машину и использовать Docker или Docker Compose для запуска одного или нескольких разных контейнеров. Но проблема в том, что по мере того, как архитектуры приложений становятся все более и более сложными, нам необходимо управлять такими вещами, как:

-надежность: наше приложение должно соответствовать стандартам производительности и давать правильные результаты,

-доступность: наше приложение должно быть в рабочем состоянии в течение определенного процента времени,

-масштабируемость: должно быть возможно плавное масштабирование в соответствии с вашей рабочей нагрузкой — желательно автоматическим способом,

-непрерывное развертывание: мы хотим вносить наши изменения в производственную среду быстро, непрерывно, не нарушая существующие развертывания.

Здесь на помощь приходит Kubernetes.
Морские историиПредставьте, что у нас в порту есть судоходная компания, и нам необходимо регулярно отправлять несколько контейнеров в другой порт. Один из способов — использовать простое небольшое судно, способное перевозить несколько контейнеров. Оно может быстро перемещаться и легко транспортировать эти контейнеры. Однако у него также есть ограничения: низкая автономность (вы тратите больше времени на заправку), больший шанс утонуть вместе с контейнерами и небольшой вес (он может перевозить, например, только два контейнера за раз). Если вместо этого мы решим использовать более крупное полнофункциональное грузовое судно для перевозки наших контейнеров, мы сможем сделать это гораздо более надежным и масштабируемым способом: большая автономия (меньше времени, затрачиваемое на дозаправку), меньшая вероятность затопления и большой масштаб одновременной перевозки сотен контейнеров.
Характеристики

Kubernetes — вот такой полноценный грузовой корабль. Он был создан Google с учетом таких основных функций:

1. Репликация — развертывание нескольких экземпляров вашего приложения.

2. Балансировка нагрузки и обнаружение служб — для маршрутизации трафика к этим реплицированным контейнерам.

3. Базовая проверка работоспособности и ремонт — система самовосстановления.

4. Планирование — сгруппировать несколько машин в пул и назначить им работу.

В последнее время компании начали понимать, что исследования и разработки играют огромную роль в машинном обучении. Но если на правильное проектирование и внедрение систем машинного обучения тратится слишком мало времени, бюджета и усилий надежным, доступным, легко обнаруживаемым и эффективным способом — получение всех преимуществ становится проблемой. Если думать о системах машинного обучения с инженерной точки зрения, Kubernetes кажется хорошим решением для решения этих проблем надежности, доступности и сроков вывода на рынок. Kubernetes увеличивает шансы на то, что система машинного обучения принесет ту ценность, которую ожидают ее создатели. Однако концептуализация и реализация архитектуры Kubernetes не происходит в одночасье, и управление кластерами Kubernetes включает в себя дополнительные обязанности с точки зрения управления, безопасности и т.д.


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *