Kubernetes
Kubernetes — это платформа с открытым исходным кодом (Google открыл его в 2014 году), которая представляет собой средство управления контейнерами. Платформа служит инструментом для контроля рабочих нагрузок и сервисов, связанных с работой контейнеров.
Настройки платформы облегчают декларативную настройку и автоматизацию процессов. Сейчас платформа является центром целой экосистемы со своим набором инструментов и сервисов.
Kubernetes позволяет внедрять и работать с приложениями в микросервисной архитектуре. Это дает ряд преимуществ командам разработки:
- Контроль потребления ресурсов: автоматический перезапуск приложений, потребляющих излишнее количество ресурсов.
- Равномерное разделение нагрузки в соответствии с местной инфраструктурой
- Гибкая система ресурсов при обновлении кластера, например, в случаях инвайтинга нового хоста
- Автозапросы на ребаланс нагрузки между версиями приложения
- Приложению легко мигрировать с одного хоста на другой в случае недостатка ресурсов или выведения его из строя.
- Облегченный откат к прежним версиям и запуск канареечных релизов, направленных на тестирование синергии между новыми участками и старым кодом.
Платформа обладает системой самообслуживания и предоставляет возможность создания аппаратных абстракций для пользователей платформы. Для команд разработчиков также есть опция быстрого запрос-ответа в плане поставки ресурсов для нивелирования нагрузок.
Kubernetes также считается более оптимизированным решением, поскольку использование контейнеров расходует ресурсы (ЦП, память) на порядок рациональнее относительно ВМ или гипервизоров.
Как работает Kubernetes
Строительным блоком kubernetes следует считать кластер, который создается из массива физических или виртуальных машин. Машины в данном случае играют роль узлов — nodes, либо связующих узлов — master-node. Узел хранит в себе группу контейнеров, что в свою очередь содержат приложения. Master в этой схеме определяет параметры контейнеров и новые маршруты трафика, когда контейнеры меняют расположение.
Среда выполнения контейнера (например, Docker) запускает контейнеры и контролирует их работу, когда по средствам Kubernetes специалист развернет их на узлах кластера.