Kubernetes - часть 1. Архитектура.

Введем базовые понятия, используемые при работе с Kubernetes

NODE - физическая или виртуальная машина кластера Kubernetes

POD - один или группа docker-контейнеров. На одной Ноде может быть несколько POD-ов.

Говоря о Kubernetes можно выделить два уровня абстракции.

Первый уровень - условно назовем физический. На этом уровне опишем, как работает Kubernetes в категориях физических или виртуальных машин. Покажем, из каких основных компонентов состоит Kubernetes.

Второй уровень - условно назовем логический. Дело в том, что Kubernetes позволяет абстрагироваться от физических машин, из которых состоит кластер. Он сам, исходя из фактической загруженности машин, решает на какой машине что развернуть. Поэтому один раз выполнив настройку Kubernetes, мы можем рассуждать уже в более высокоуровневых логических категориях.

ФИЗИЧЕСКИЙ УРОВЕНЬ

В простейшем случае кластер Kubernetes состоит из одной Master Node, и нескольких Worker Node.

На самом деле кластер может включать в себя несколько master-нод, но мы пока не будем рассматривать этот случай.

Kuber-layer-1.jpg

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-а

CreatePodDiagram.png

ЛОГИЧЕСКИЙ УРОВЕНЬ

Если на первом уровне мы рассматриваем весьма "осязаемые" вещи (такие как виртуальные машины, компоненты, которые необходимо установить), то на втором уровне мы рассмотрим абстракции, “накладываемые” на виртуальную или физическую инфрастуктуру. Дело в том, что один раз установив нужные компоненты Kubernetes, нам уже не нужно беспокоиться о том, какие поды на каких физических серверах будут запущены, и как именно взаимодействуют внутренние компоненты Kubernetes.

Kubernetes позволяет разработчикам абстрагироваться от инфраструктуры, давая простое API, к которому можно отправлять запросы. Эти запросы Kubernetes старается выполнить, используя все свои возможности. Например, получив команду на развертывание нового пода, Kubernetes сам найдёт не слишком загруженную ноду, и развернет там новый Pod.

Основными логическими единицами являются POD-ы и сервисы.

Сервисы предоставляют абстрацию над POD-ами. Один из видов сервиса - балансировщик нагрузки.

e0f0817e9fc090628aa1d0d89577ce80.gif

ПРИМЕР

Расммотрим архитектуру кластера, в котором мы создадим два приложения, общающиеся между собой через Kafka. А именно:

  • Приложение kafka-provider будет предоставлять REST-ендпоинт для отправки сообщение в Kafka.

  • Приложение kafka-consumer будет принимать сообщение из Kafka и предоставлять REST-ендпоинт для просмотра принятых сообщений.

Дополнительным условием будет возможность горизонтального масштабирования приложения kafka-provider.

Тогда архитектура нашего кластера будет выглядеть следующим образом:

kuber-architecture2.jpg

ЗАКЛЮЧЕНИЕ

Самое приятное, что балансировка нагрузки и мониторинг работоспособности POD-ов - это задачи, которые берет на себя Kubernetes. Разворачивание новых POD-ов или удаление POD-ов также осуществляется очень просто через запросы к Kubernetes.

В следующих статьях мы рассмотрим непосредственно установку и настройку Kubernetes, а также действительно развернем кластер, показанный в примере.

ССЫЛКИ НА СТАТЬИ

rtfm.co.ua/kubernetes-znakomstvo-chast-1-ar..

habr.com/ru/company/ruvds/blog/438982

habr.com/ru/company/ruvds/blog/438984