Kubernetes - часть 1. Архитектура.
Введем базовые понятия, используемые при работе с Kubernetes
NODE - физическая или виртуальная машина кластера Kubernetes
POD - один или группа docker-контейнеров. На одной Ноде может быть несколько POD-ов.
Говоря о Kubernetes можно выделить два уровня абстракции.
Первый уровень - условно назовем физический. На этом уровне опишем, как работает Kubernetes в категориях физических или виртуальных машин. Покажем, из каких основных компонентов состоит Kubernetes.
Второй уровень - условно назовем логический. Дело в том, что Kubernetes позволяет абстрагироваться от физических машин, из которых состоит кластер. Он сам, исходя из фактической загруженности машин, решает на какой машине что развернуть. Поэтому один раз выполнив настройку Kubernetes, мы можем рассуждать уже в более высокоуровневых логических категориях.
ФИЗИЧЕСКИЙ УРОВЕНЬ
В простейшем случае кластер Kubernetes состоит из одной Master Node, и нескольких Worker Node.
На самом деле кластер может включать в себя несколько master-нод, но мы пока не будем рассматривать этот случай.
Master-нода используется только для административных задач, тогда как реальные контейнеры с вашими сервисами будут запущены на Worker Node.
MASTER NODE
На Master Node работают четыре основных компонента, которые обеспечивают работу всех компонентов системы:
- API-server
Точка входа для запросов по управлению кластером. Любые команды от kubectl (клиент, через который специалист посылает запросы Kubernetes) отправляются в виде API-запросов к API server на Master Node.
API-сервер обрабатывает все REST-запросы, валидирует их и обновляет информацию в etcd.
- Scheduler
Определяет, на какой Worker Node создавать новый Pod, в зависимости от требуемых ресурсов и занятости нод.
- Controller-manager
Вспомогательный компонент, осуществляющий мониторинг состояния кластера через API-сервер, сборкой мусора и другими задачами.
- etcd
Key-value хранилище для хранения состояния кластера
WORKER NODE
Виртуальная или физическая машина, на которой имеются компоненты Kubernetes для запуска POD-ов.
Kubelet: основной компонент Kubernetes на каждой worker-ноде кластера. Он взаимодействует с API-сервером и управляет созданием POD-ов на данной машине.
ПРИМЕР: ДИАГРАМА ВЗАИМОДЕЙСТВИЯ ПРИ СОЗДАНИИ POD-а
ЛОГИЧЕСКИЙ УРОВЕНЬ
Если на первом уровне мы рассматриваем весьма "осязаемые" вещи (такие как виртуальные машины, компоненты, которые необходимо установить), то на втором уровне мы рассмотрим абстракции, “накладываемые” на виртуальную или физическую инфрастуктуру. Дело в том, что один раз установив нужные компоненты Kubernetes, нам уже не нужно беспокоиться о том, какие поды на каких физических серверах будут запущены, и как именно взаимодействуют внутренние компоненты Kubernetes.
Kubernetes позволяет разработчикам абстрагироваться от инфраструктуры, давая простое API, к которому можно отправлять запросы. Эти запросы Kubernetes старается выполнить, используя все свои возможности. Например, получив команду на развертывание нового пода, Kubernetes сам найдёт не слишком загруженную ноду, и развернет там новый Pod.
Основными логическими единицами являются POD-ы и сервисы.
Сервисы предоставляют абстрацию над POD-ами. Один из видов сервиса - балансировщик нагрузки.
ПРИМЕР
Расммотрим архитектуру кластера, в котором мы создадим два приложения, общающиеся между собой через Kafka. А именно:
Приложение kafka-provider будет предоставлять REST-ендпоинт для отправки сообщение в Kafka.
Приложение kafka-consumer будет принимать сообщение из Kafka и предоставлять REST-ендпоинт для просмотра принятых сообщений.
Дополнительным условием будет возможность горизонтального масштабирования приложения kafka-provider.
Тогда архитектура нашего кластера будет выглядеть следующим образом:
ЗАКЛЮЧЕНИЕ
Самое приятное, что балансировка нагрузки и мониторинг работоспособности POD-ов - это задачи, которые берет на себя Kubernetes. Разворачивание новых POD-ов или удаление POD-ов также осуществляется очень просто через запросы к Kubernetes.
В следующих статьях мы рассмотрим непосредственно установку и настройку Kubernetes, а также действительно развернем кластер, показанный в примере.
ССЫЛКИ НА СТАТЬИ
rtfm.co.ua/kubernetes-znakomstvo-chast-1-ar..