Найти в Дзене
bashninja | DevOps & SRE ⚙️

Что такое Kubernetes?

Kubernetes — это платформа с открытым исходным кодом для управления контейнеризированными рабочими нагрузками (workload) и сервисами. Фактически Kubernetes является оркестратором рабочей нагрузки. Оркестраторы рабочей нагрузки появились в связи с ростом популярности микросервисного стиля архитектуры и развитием cloud native технологий. Микросервисный архитектурный стиль предполагает, что приложение будет представлено в виде набора сервисов, которые разрабатываются и обновляются независимо. Сервис в микросервисной архитектуре выполняет роль модуля или компонента. Т. к. в приложении может быть довольно много модулей, то приложение может состоять из довольного большого количества сервисов. Если сервис не очень высоконагруженный, то выделять под него целый сервер затратно. Поэтому для лучшей утилизации ресурсов возникла необходимость запускать несколько сервисов на одной физической или виртуальной машине. И мы приходим к ситуации, когда у нас много сервисов и много серверов с довольно слож

Kubernetes — это платформа с открытым исходным кодом для управления контейнеризированными рабочими нагрузками (workload) и сервисами. Фактически Kubernetes является оркестратором рабочей нагрузки.

Оркестраторы рабочей нагрузки появились в связи с ростом популярности микросервисного стиля архитектуры и развитием cloud native технологий. Микросервисный архитектурный стиль предполагает, что приложение будет представлено в виде набора сервисов, которые разрабатываются и обновляются независимо. Сервис в микросервисной архитектуре выполняет роль модуля или компонента. Т. к. в приложении может быть довольно много модулей, то приложение может состоять из довольного большого количества сервисов.

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

· Как обеспечить изоляцию нескольких сервисов на одном сервере и удобный запуск? Например, могут быть случаи, когда одно приложение будет занимать большую часть ресурсов, в результате чего другие сервисы будут работать хуже.

· Как при добавлении нового экземпляра сервиса выбрать сервер, на котором достаточно ресурсов для запуска?

· Как гарантировать отсутствие простоев? Если сервис выходит из строя, необходимо его перезапустить. Если вышел из строя сервер, то необходимо запустить те сервисы, которые на нем были, на других машинах.

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

· Как обеспечить горизонтальное и вертикальное масштабирование сервисов?

· Как обеспечить конфигурирование сервисов?

· Как обеспечить обновление приложения новую версию?
И т.д

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

Для комплексного решения появились оркестраторы рабочей нагрузки (workload): Apache Mesos, Nomad в связке с Consul-ом и, конечно, Kubernetes. Они и занимаются распределением рабочей нагрузки (запущенных сервисов) по серверам, масштабированием и обработкой ошибок в приложении, предоставляют шаблоны развертывания и многое другое.

В частности, основные задачи Kubernetes заключаются в следующем:

· Запуск сервисов в контейнерном окружении и их распределение по серверам

· Слежение за жизнеспособностью экземпляров сервисов

· Конфигурирование сервисов

· Управление средой выполнения сервисов и приложений

· Осуществление различных стратегий обновления

· Осуществление механизмов межсервисного взаимодействия

· Осуществление механизмов балансировки и маршрутизации клиентского трафика

· Управление хранилищами

Kubernetes не предоставляет платформу как сервис, у него нет в составе полноценных инструментов CI/CD, централизованной системы логирования из коробки, встроенных облачных инфраструктурных сервисов: базы данных как сервиса или очереди сообщений как сервис. Но Kubernetes имеет встроенные механизмы для расширения. Большинство облачных и on-premise решений на основе Kubernetes являются в конечном итоге платформами.

Ссылки:
определение Kubernetes в официальной документации

#kubernetes #devops #автоматизация