Как работает Kubernetes: история появления, принципы микросервисной архитектуры, прогноз развития рынка
Написанный с целью внутреннего использования в компании Google Kubernetes со временем стал неотъемлемой частью процесса разработки новых приложений. До момента его появления сфера ИТ-разработки страдала от монолитной структуры серверов, которая не позволяла контролировать занимаемое приложениями количество ресурсов. С появлением оркестраторов, таких как Kubernetes, жизнь разработчиков значительно облегчилась, а цикл разработки стал непрерывным и автоматизированным.
В этой статье будут рассмотрены особенности Kubernetes как оркестратора, оценим преимущества и недостатки и узнаем, где его применять и как работать с продуктом.
Как появился Kubernetes
Мир узнал о Kubernetes в 2014 г., когда корпорация Google опубликовала исходные коды проекта под названием «Project seven», которое отсылало к персонажу известного и популярного в то время сериала «Star Trek». Со временем у проекта появилось то название, позаимствованное из греческого языка, — Kubernetes.
Изначально проект задумывался исключительно для нужд самой компании и разрабатывался под влиянием другого проекта Google — Google Borg, системы управления кластерами. Выпустив первый релиз Kubernetes, корпорация решила сделать его своим вкладом в развитие ИТ. Поэтому в 2015 г., спустя год после публикации исходных кодов проекта, Google и Linux Foundation организовали фонд, которому были переданы права на Kubernetes.
До появления Kubernetes основными проблемами процесса разработки были монолитные физические сервера, компоненты которых тесно взаимосвязаны, и ручная настройка процедур. Части приложения либо находились на одном сервере и были сложно отделимы, либо разбивались на несколько серверов, но в таком случае было сложно контролировать использование ресурсов. Иногда распределение приложения по серверам оказывалось неэффективным из-за того, что где-то место пустовало, а где-то, наоборот, было целиком занято.
Одной из главных трудностей при выпуске новых приложений и обновлений было то, что изменять какой-либо компонент было невозможно без изменения других взаимосвязанных. Из-за отсутствия изоляции частей кода релизы таких приложений могли затягиваться и требовали больше работы со стороны разработчиков.
Ситуация изменилась благодаря оркестраторам: они позволяют следить за распределением ресурсов в автоматическом режиме, разрабатывать, обновлять и развертывать компоненты приложения по отдельности. К 2021 г. такая организация процесса разработки широко распространилась в ИТ и называется микросервисной архитектурой.
Сейчас микросервисная архитектура очень популярна: ее используют и крупные корпорации, в том числе те, кто разворачивает сервисы на базе Kubernetes. Вот главные причины перехода на контейнеры и программное обеспечение, автоматизирующее их управление:
- Масштабируемость ресурсов и нагрузки.
- Бесшовная и быстрая разработка.
- Уменьшение затрат на инфраструктуру.
Все эти причины могут серьезно повлиять на успешность проекта, поэтому оркестраторы стали незаменимым и эффективным инструментом в современных компаниях.
Как работает Kubernetes
Kubernetes — это платформа для управления контейнерами, которая включает в себя следующие компоненты:
- Виртуальные машины (node).
- Модули управления приложениями (pods).
- Сервер API.
- Хранилище данных (в формате «ключ-значение»).
- kube-scheduler (отслеживает поды и позволяет выбрать виртуальную машину, на которой они должны работать).
- kube-controller-manager (запускает контроллеры на узлах и подах).
- kube-proxy (управляет маршрутизацией трафика в подах).
- kubelet (отслеживает статусы подов и выполнения контейнеров).
- Среда выполнения контейнера.
Для развертывания приложений в Kubernetes используются виртуальные машины и работающие на них контейнеры — это специальное окружение для передачи кода приложения на сервер при разработке. Оно гарантирует, что код будет работать на сервере так же, как и локально у разработчика.
Часто разные компоненты приложения разрабатываются силами разных команд, поэтому библиотеки у сервисов и контейнеров могут отличаться. Контейнеры удобны тем, что обладают собственной памятью, библиотеками и файловой системой, а также изолированы от основной инфраструктуры. Это позволяет разделить приложение на независимые части и с легкостью изменять и дорабатывать их.
Для работы каждого из контейнеров нужны средства запуска сервисов — их среды исполнения. Сред исполнения, которые поддерживаются оркестратором, несколько: например, в документации по Kubernetes указаны Docker, containerd и CRI-O.
У Kubernetes есть также встроенный инструмент по мониторингу ресурсов — Kubernetes cAdvisor, который умеет собирать данные по использованию ресурсов для каждой виртуальной машины кластера. Как события мониторинга записываются общие метрики о контейнерах, представленные в специальном пользовательском интерфейсе. Для кластера Kubernetes доступно логирование: этот механизм позволяет собирать и сохранять логи контейнеров в общем хранилище и просматривать их.
Важная особенность работы Kubernetes — гибкое масштабирование. Для микросервисной архитектуры продукт позволяет масштабировать количество ресурсов для конкретного сервиса, не затрагивая другие компоненты приложения.
Главная задача Kubernetes — управление контейнерами или их оркестрация. Благодаря продукту все действия с кодом можно выполнять быстрее и проще. Например, вывести обновление для одного из микросервисов, увеличить ресурсы для конкретного компонента или откатить приложение до предыдущей версии в случае неудачного релиза.
Однако стоит помнить и о недостатках продукта. К слабым местам Kubernetes чаще всего относят неполную и неподробную документацию, а также множество специальных сущностей (например, под или контроллер), которые затрудняют взаимодействие с системой. Эти особенности лучше иметь в виду перед тем, как начать работу с Kubernetes.
Сфера применения Kubernetes: текущее состояние и прогнозы
В современном digital-мире от приложений и сервисов требуют не только эффективности, но и непрерывной работы. С организацией разработки «без простоя» сталкивается почти любая компания не только в сфере ИТ: приложение нужно выпустить вовремя, обновить и исправить ошибки незаметно для пользователя. Как раз такие проблемы решают Kubernetes и другие инструменты контейнеризации в дополнение к технологиям микросервисной архитектуры.
Kubernetes широко используется крупными цифровыми компаниями и даже стал своего рода стандартом среди оркестраторов. По данным Datadog, к концу 2020 г. почти все контейнеры (90%) управлялись с помощью систем оркестрации и в половине случаев для автоматизации контейнеров использовался именно Kubernetes.
По прогнозам от StackRox, популярность Kubernetes в качестве оркестратора будет расти и в ближайшем будущем. По данным исследования, почти каждый опрошенный использует Kubernetes в своей компании, и востребованность этого инструмента в 2021 г. выросла на 50%.
Главной проблемой контейнерных систем в 2021 г. стала безопасность: почти 95% участников опроса столкнулись с инцидентами безопасности, используя Kubernetes. Однако самая распространенная причина таких проблем, согласно опросу, — человеческий фактор.
Тем не менее, в течение всего 2021 г. Kubernetes наряду с DBaaS (эти два сервиса являются основой сегмента PaaS облачного рынка РФ), большинство провайдеров называли самой популярной и перспективной ИТ-услугой.
По данным аналитиков Market.CNews, на развитии сегмента PaaS в 2020-2021 гг. негативно отразилась пандемия. Дело в том, что в условиях быстро меняющихся обстоятельств, большинство компаний предпочли услуги из сферы SaaS, а контейнерные разработки оставили на будущее. Но это будущее неминуемо наступит.
За прошедшие 1,5 года бизнес адаптировался к изменениям и закрыл большинство проблем SaaS-решениями. В связи с этим стоит ожидать, что в 2022-2023 гг. спрос на PaaS и, в частности, Kubernetes, будет расти опережающими темпами. Помимо общего интереса сработает фактор отложенного спроса.