Архитектура 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.
Если вы хотите проявить любовь к этому посту, купите средний месячный абонемент, купив его по моей реферальной ссылке здесь.