Кубернетес — Архитектура

Опубликовано: 18 Февраля, 2023

Предварительное условие: Kubernetes

Кластер Kubernetes в основном состоит из рабочих машин, называемых узлами, и плоскости управления. В кластере есть как минимум один рабочий узел. Kubectl CLI взаимодействует с Control Plane, а Control Plane управляет рабочими узлами.

Теперь мы видим архитектуру в деталях.

Плоскость управления/главный узел:

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

  1. Сервер API. Сервер API — это компонент плоскости управления Kubernetes, предоставляющий доступ к API Kubernetes. Это как начальный шлюз для кластера, который прослушивает обновления или запросы через CLI, например Kubectl. Kubectl взаимодействует с API-сервером, чтобы сообщить, что необходимо сделать, например, создать модули или удалить модули и т. д. Он также работает как привратник. Обычно он проверяет полученные запросы, а затем перенаправляет их другим процессам. Ни один запрос не может быть передан напрямую в кластер, он должен пройти через сервер API.
  2. Планировщик: когда сервер API получает запрос на модули планирования, этот запрос передается планировщику. Он разумно решает, на каком узле запланировать модуль для повышения эффективности кластера.
  3. Диспетчер контроллера: диспетчер контроллера отвечает за обнаружение изменений состояния кластера. Например, если модуль умирает, он информирует планировщик о повторном планировании модуля.
  4. etcd: это хранилище ключей-значений кластера. Изменения состояния кластера сохраняются в файле etcd. Он действует как мозг кластера, поскольку сообщает планировщику и другим процессам о доступных ресурсах и изменениях состояния кластера.

Рабочий узел:

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

  1. Среда выполнения контейнера. Среда выполнения контейнера необходима для запуска контейнеров приложений, работающих в модулях внутри модуля. Пример-> Докер
  2. kubelet: kubelet взаимодействует как со средой выполнения контейнера, так и с Node. Это процесс, отвечающий за запуск модуля с контейнером внутри.
  3. kube-proxy: это процесс, отвечающий за пересылку запроса от Сервисов к модулям. Он имеет интеллектуальную логику для пересылки запроса в нужный модуль на рабочем узле.