Найти тему
Yandex.Cloud

5 причин популярности Kubernetes

Благодаря которым, он стал таким популярным у разработчиков.

Kubernetes (K8s) — это система с открытым исходным кодом. С помощью контейнерной оркестровки она автоматизирует работу с приложениями и упрощает:

  • администрирование,
  • развертывание,
  • масштабирование,
  • сетевое взаимодействие,
  • доступность.

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

Работа K8s основана на REST API. Все операции и обмен данными между компонентами и внешними пользовательскими командами являются вызовами REST API. То есть каждый объект на платформе рассматривается как объект API. Это и сделало Kubernetes таким популярным. Он ускоряет цикл итераций: сделали — запустили — поправили — запустили. Весь цикл разработки и поставки софта на продакшн контролируют сами разработчики.

Пять ключевых особенностей Kubernetes.

Декларативное описание приложений

Его польза в следующем — неважно в каком порядке, в течение какого времени и как часто система получает описание объектов кластера. Оно будет преобразовано в желаемое состояние кластера. Если в систему передан объект с развертыванием Deployment, а такого развертывания в кластере еще нет, то объект будет создан. Если в систему передан обновленный сервис Service, с добавлением еще одного порта, то система динамически выберет одно из двух: обновит соответствующий объект или удалит предыдущий и создаст новый. Так кластер будет приведен в его желаемое состояние.

Декларативные развертывания помогают управлять выпусками, обновлениями и масштабированием. Они указывают K8s, как развертывать новые изменения, масштабировать нагрузку и откатывать софт до предыдущей редакции.

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

Масштабирование приложений и кластеров

Неизменная декларативная природа Kubernetes упрощает масштабирование.

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

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

Отсутствие привязки к определенной платформе

Kubernetes отделяет разработчиков от физических машин и таким образом, обеспечивает перенос приложений между различными средами. Миграция с одного облака на другое упрощена благодаря API. Кроме того, поддерживается синхронизация кластеров в разных облаках.

Лучше всего преимущества K8s раскрываются в публичном облаке. Оно избавляет разработчиков от необходимости администрирования и помогает сконцентрироваться только на разработке.

Поддержка микросервисной архитектуры

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

Изоляция

В изолированной архитектуре компоненты отделены друг от друга API-интерфейсами и балансировщиками нагрузки. Первые создают буфер между разработчиками и пользователями, а вторые — буфер между запущенными экземплярами каждой службы. Разделение компонентов с помощью балансировщиков упрощает масштабирование программ, входящих в сервис. Увеличение размера программы выполняется без корректировки или перенастройки других уровней сервиса.

Что в итоге

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