Благодаря которым, он стал таким популярным у разработчиков.
Kubernetes (K8s) — это система с открытым исходным кодом. С помощью контейнерной оркестровки она автоматизирует работу с приложениями и упрощает:
- администрирование,
- развертывание,
- масштабирование,
- сетевое взаимодействие,
- доступность.
Kubernetes — это разработка Google. Она способна обслуживать огромное количество хостов, запускать контейнеры, отслеживать их состояние, контролировать совместную работу, проводить балансировку нагрузки и многое другое.
Работа K8s основана на REST API. Все операции и обмен данными между компонентами и внешними пользовательскими командами являются вызовами REST API. То есть каждый объект на платформе рассматривается как объект API. Это и сделало Kubernetes таким популярным. Он ускоряет цикл итераций: сделали — запустили — поправили — запустили. Весь цикл разработки и поставки софта на продакшн контролируют сами разработчики.
Пять ключевых особенностей Kubernetes.
Декларативное описание приложений
Его польза в следующем — неважно в каком порядке, в течение какого времени и как часто система получает описание объектов кластера. Оно будет преобразовано в желаемое состояние кластера. Если в систему передан объект с развертыванием Deployment, а такого развертывания в кластере еще нет, то объект будет создан. Если в систему передан обновленный сервис Service, с добавлением еще одного порта, то система динамически выберет одно из двух: обновит соответствующий объект или удалит предыдущий и создаст новый. Так кластер будет приведен в его желаемое состояние.
Декларативные развертывания помогают управлять выпусками, обновлениями и масштабированием. Они указывают K8s, как развертывать новые изменения, масштабировать нагрузку и откатывать софт до предыдущей редакции.
Таким образом, декларативная конфигурация обеспечивает контроль изменений и поддержку непрерывного развертывания.
Масштабирование приложений и кластеров
Неизменная декларативная природа Kubernetes упрощает масштабирование.
Так как контейнеры неизменяемы, количество реплик — это просто число в декларативной конфигурации. В любой момент оно может быть изменено вручную или автоматически.
Также доступно масштабирование самого кластера. Kubernetes упрощает и эту задачу, ведь каждая машина в кластере идентична любой другой машине, а сами приложения отделены от машины контейнерами. Соответственно, добавление дополнительных ресурсов — это всего лишь вопрос создания новой машины.
Отсутствие привязки к определенной платформе
Kubernetes отделяет разработчиков от физических машин и таким образом, обеспечивает перенос приложений между различными средами. Миграция с одного облака на другое упрощена благодаря API. Кроме того, поддерживается синхронизация кластеров в разных облаках.
Лучше всего преимущества K8s раскрываются в публичном облаке. Оно избавляет разработчиков от необходимости администрирования и помогает сконцентрироваться только на разработке.
Поддержка микросервисной архитектуры
Микросервисы упрощают разделение работы между командами и отдельными специалистами. Разработчикам проще добавлять отдельные элементы в микросервис, чем в монолит. Это уменьшает время сборки проектов, ведь у каждого микросервиса отдельный репозиторий. А чем больше изоляция, тем проще следить за тем, что происходит в репозитории и легче что-то переделать. K8s выступает в роли платформы для микросервисной архитектуры и реализует все ее преимущества.
Изоляция
В изолированной архитектуре компоненты отделены друг от друга API-интерфейсами и балансировщиками нагрузки. Первые создают буфер между разработчиками и пользователями, а вторые — буфер между запущенными экземплярами каждой службы. Разделение компонентов с помощью балансировщиков упрощает масштабирование программ, входящих в сервис. Увеличение размера программы выполняется без корректировки или перенастройки других уровней сервиса.
Что в итоге
Разработчики получают гибкий инструмент для управления релизами. С ним они могут накатывать релиз одной кнопкой и быстро откатывать его обратно, в случае необходимости. А могут выкатывать релиз постепенно с отслеживанием показателей мониторинга. Это помогает быстро обнаруживать возможные ошибки в новой версии и не допускать их до продакшена.