Кубернетес — Архитектура
Предварительное условие: Kubernetes
Кластер Kubernetes в основном состоит из рабочих машин, называемых узлами, и плоскости управления. В кластере есть как минимум один рабочий узел. Kubectl CLI взаимодействует с Control Plane, а Control Plane управляет рабочими узлами.
Теперь мы видим архитектуру в деталях.
Плоскость управления/главный узел:
По сути, это набор различных компонентов, которые помогают нам управлять общим состоянием кластера. Например, если вы хотите настроить новые модули, уничтожить модули, масштабировать модули и т. д. В основном на плоскости управления работают 4 службы:
- Сервер API. Сервер API — это компонент плоскости управления Kubernetes, предоставляющий доступ к API Kubernetes. Это как начальный шлюз для кластера, который прослушивает обновления или запросы через CLI, например Kubectl. Kubectl взаимодействует с API-сервером, чтобы сообщить, что необходимо сделать, например, создать модули или удалить модули и т. д. Он также работает как привратник. Обычно он проверяет полученные запросы, а затем перенаправляет их другим процессам. Ни один запрос не может быть передан напрямую в кластер, он должен пройти через сервер API.
- Планировщик: когда сервер API получает запрос на модули планирования, этот запрос передается планировщику. Он разумно решает, на каком узле запланировать модуль для повышения эффективности кластера.
- Диспетчер контроллера: диспетчер контроллера отвечает за обнаружение изменений состояния кластера. Например, если модуль умирает, он информирует планировщик о повторном планировании модуля.
- etcd: это хранилище ключей-значений кластера. Изменения состояния кластера сохраняются в файле etcd. Он действует как мозг кластера, поскольку сообщает планировщику и другим процессам о доступных ресурсах и изменениях состояния кластера.
Рабочий узел:
Это узлы, где происходит фактическая работа. Каждый узел может иметь несколько модулей, а внутри модулей могут работать контейнеры. В каждом узле есть 3 процесса, которые используются для планирования и управления этими модулями.
- Среда выполнения контейнера. Среда выполнения контейнера необходима для запуска контейнеров приложений, работающих в модулях внутри модуля. Пример-> Докер
- kubelet: kubelet взаимодействует как со средой выполнения контейнера, так и с Node. Это процесс, отвечающий за запуск модуля с контейнером внутри.
- kube-proxy: это процесс, отвечающий за пересылку запроса от Сервисов к модулям. Он имеет интеллектуальную логику для пересылки запроса в нужный модуль на рабочем узле.