Kubernetes - модное слово в мире инфраструктуры уже несколько лет. Kubernetes - это не только греческое слово, обозначающее кого-то из командующих, но и один из самых успешных и быстрорастущих проектов с открытым исходным кодом.

Но почему так? Что такое Kubernetes и какие проблемы он пытается решить? Эта история исследует, что и почему Kubernetes, и служит введением в мир контейнеров и оркестровки.

Learning Rate - это мой еженедельный информационный бюллетень для тех, кто интересуется миром AI и MLOps. Каждую пятницу вы будете получать от меня обновления и мысли о последних новостях, исследованиях, репозиториях и книгах в области искусственного интеллекта. Подпишитесь здесь!

Что такое Kubernetes?

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

Проще говоря, Kubernetes - это оркестратор контейнеров, который помогает убедиться, что каждый контейнер находится там, где он должен быть, и что контейнеры могут взаимодействовать друг с другом.

Если ты все еще чувствуешь себя потерянным, ничего страшного. Иногда нужно понимать, зачем нам что-то подобное, в чем проблема и как эта новая блестящая штука дает решение. С этой целью давайте разберемся, какова цель Kubernetes.

Почему Kubernetes?

Некоторые приложения объединяют все свои функции в один развертываемый артефакт. Различные сервисы, транзакции и сторонние интеграции находятся внутри одной и той же базовой кодовой базы. Эти приложения называются монолитами.

Такая конструкция делает систему жесткой и сложной для обновления, поскольку все должно разворачиваться одновременно. Предположим, группа разработчиков, работающих над сервисом x, выполнила свои задачи. В этом случае им ничего не остается, кроме как ждать, пока разработчики команды y, которые работают над совершенно другим аспектом приложения, также завершат свой спринт.

Более того, масштабирование также имеет ту же проблему; представьте, что части приложения требуется больше ресурсов для доставки. Теперь инженеры должны предоставить больше ресурсов для всего приложения, даже если узкое место находится только в одной области.

Чтобы решить эти проблемы, мы обратились к микросервисам; Функциональность системы разделена на многократно используемые фрагменты кода, каждый из которых отвечает за одну операцию. Если мы хотим обновить часть приложения, мы могли бы легко обновить только учетную запись службы. Более того, мы можем масштабировать отдельные сервисы, чтобы они соответствовали производительности, которую ожидают наши пользователи, без избыточного выделения ресурсов.

Таким образом, распределенные вычисления начали набирать обороты, и контейнеры оказались в нужном месте в нужное время. С помощью контейнеров разработчики могут упаковывать свои сервисы со всеми их зависимостями и конфигурациями. Итак, разработчики теперь уверены, что их сервисы могут работать одинаково независимо от базовой инфраструктуры.

Тем не менее, некоторые проблемы все еще не решены:

  • Обновить контейнер легко, но как сделать это так, чтобы пользователи не заметили этого и не простояли?
  • Как сервисы могут обнаруживать друг друга и как контейнеры умеют общаться?
  • Как мы можем отслеживать производительность системы, при необходимости вмешиваться и устранять проблемы?

Дирижер оркестра

Нам нужна была система оркестровки, которая могла бы автоматизировать всю рутинную работу. В частности, идеальная система должна:

  • Планирование рабочих нагрузок (т. Е. Контейнеров) на разных узлах
  • Мониторинг и реагирование на проблемы со здоровьем узлов и контейнеров
  • Обеспечьте хранилище, сеть, прокси, безопасность и ведение журнала
  • Будьте декларативными, а не императивными
  • Быть расширяемым

Здесь в игру вступает Kubernetes; как дирижер оркестра, Kubernetes управляет жизненным циклом контейнеров на разных узлах, которые могут быть физическими или виртуальными.

Эти узлы сгруппированы в кластер. У каждого контейнера есть конечные точки, DNS, хранилище и масштабируемость. И Kubernetes предназначен для автоматизации всей этой повторяющейся работы.

Заключение

Kubernetes - модное слово в мире инфраструктуры уже пару лет. Что такое Kubernetes и почему все, кажется, об этом говорят?

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

В следующих статьях мы погрузимся глубже, создадим приложения, будем управлять их жизненным циклом и более подробно объясним некоторые функции Kubernetes.

об авторе

Меня зовут Димитрис Поулопулос, я инженер по машинному обучению, работающий в Arrikto. Я разработал и внедрил ИИ и программные решения для крупных клиентов, таких как Европейская комиссия, Евростат, МВФ, Европейский центральный банк, ОЭСР и IKEA.

Если вы хотите прочитать больше сообщений о машинном обучении, глубоком обучении, науке о данных и DataOps, подпишитесь на меня в Medium, LinkedIn или @ james2pl в Twitter.

Выраженные мнения являются исключительно моими и не отражают взгляды или мнения моего работодателя.