Архитектура K8s объясняется простыми словами.

Kubernetes — это мощная и популярная система с открытым исходным кодом для автоматизации развертывания, масштабирования и управления контейнерными приложениями.

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

По своей сути Kubernetes — это платформа оркестрации контейнеров, которая управляет развертыванием и планированием контейнеров в кластере машин.

Архитектура Kubernetes основана на модели главный-рабочий узел, где главный узел отвечает за управление всем кластером, а рабочие узлы — это машины, на которых выполняются реальные контейнеры.

В этой статье мы более подробно рассмотрим, как работает Kubernetes, в том числе подробно рассмотрим роли и обязанности главного и рабочего узлов.

Главный узел Kubernetes

Главный узел Kubernetes — это мозг операции, отвечающий за управление всем кластером и обеспечение бесперебойной работы.

Главный узел состоит из нескольких компонентов, в том числе:

  • kube-apiserver, который предоставляет Kubernetes API и действует как точка входа для всех внешних взаимодействий с кластером.
  • Распределенное хранилище etcd, которое используется для хранения данных кластера, включая текущее состояние кластера и желаемое состояние каждого приложения.
  • kube-scheduler, который отвечает за планирование запуска контейнеров на рабочих узлах на основе доступных ресурсов и определенных требований к ресурсам для каждого приложения.
  • kube-controller-manager, который отвечает за управление состоянием кластера, включая репликацию контейнеров приложений и согласование желаемого и фактического состояния кластера.

Вместе эти компоненты составляют плоскость управления Kubernetes, которая отвечает за управление всем кластером и обеспечение бесперебойной работы.

Плоскость управления — это «мозг» кластера Kubernetes, принимающий решения о том, как развертывать контейнеры, работающие на рабочих узлах, и управлять ими.

Рабочие узлы Kubernetes

Рабочие узлы — это машины, которые фактически запускают контейнеры в кластере Kubernetes. Каждый рабочий узел запускает ряд компонентов, в том числе:

  • kubelet отвечает за связь с главным узлом и за корректную работу контейнеров на рабочем узле. Кублет также взаимодействует со средой выполнения Docker на рабочем узле для управления контейнерами.
  • Kube-proxy отвечает за балансировку нагрузки трафика к контейнерам на рабочем узле.
  • Среда выполнения контейнера отвечает за запуск контейнеров на рабочем узле. Kubernetes поддерживает несколько сред выполнения контейнеров, включая Docker и rkt.

Рабочие узлы — это «рабочие пчелы» кластера Kubernetes, отвечающие за запуск контейнеров и выполнение инструкций от главного узла.

Рабочие узлы взаимодействуют с главным узлом с помощью API Kubernetes, который предоставляется kube-apiserver на главном узле.

Как это работает?

Так как же на самом деле работает Kubernetes? Давайте рассмотрим пример, чтобы увидеть, как главный и рабочий узлы работают вместе для развертывания и управления контейнерным приложением.

Сначала разработчик пишет и тестирует код приложения, упаковывая его в один или несколько контейнеров с помощью Docker или другой среды выполнения контейнеров.

Затем разработчик использует API Kubernetes для создания объекта развертывания, который определяет желаемое состояние приложения, включая количество реплик контейнера для запуска и требования к ресурсам приложения.

Объект развертывания отправляется в Kube.

Объект развертывания отправляется серверу kube-apiserver на главном узле, который сохраняет его в распределенном хранилище ключей и значений etcd.

Планировщик Kube на главном узле затем планирует запуск контейнеров на рабочих узлах с учетом доступных ресурсов и определенных требований к ресурсам приложения.

Кублет на каждом рабочем узле получает инструкции от главного узла и связывается со средой выполнения Docker на рабочем узле для развертывания и запуска контейнеров.

Прокси-сервер kube на каждом рабочем узле отвечает за балансировку нагрузки на контейнеры, гарантируя, что они получают соответствующий объем ресурсов и могут обрабатывать входящие запросы.

Во время работы контейнеров менеджер-контроллер-куба на главном узле отслеживает состояние кластера и следит за тем, чтобы фактическое состояние соответствовало желаемому состоянию, определенному в объекте развертывания.

Если фактическое состояние отличается от желаемого состояния, Kube-controller-manager предпримет корректирующие действия, например увеличит или уменьшит количество реплик контейнера или переназначит контейнеры на другие рабочие узлы.

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

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

Заключение

Kubernetes — это мощная и популярная система с открытым исходным кодом для автоматизации развертывания, масштабирования и управления контейнерными приложениями.

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

Вот некоторые ресурсы, которым вы должны следовать, если хотите начать свое путешествие в Kubernetes.







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



👋 Если вы считаете это полезным, пожалуйста, несколько раз нажмите кнопку аплодисментов 👏 ниже, чтобы выразить свою поддержку автору 👇

🚀Присоединяйтесь к сообществу разработчиков FAUN и получайте похожие истории в свой почтовый ящик каждую неделю