☸️ Понимание архитектуры Kubernetes

by itisgood
Давайте изучим архитектуру Kubernetes подробно.
Kubernetes следует мастер-слейв архитектуре.
Архитектура Kubernetes имеет главный узел ( master хост или нода ) и рабочие узлы (workers ноды).
Есть четыре компонента главного узла.
  • Kube API server
  • controller
  • scheduler
  • etcd
И рабочий узел состоит из трех компонентов.
  • kubelet
  • kube-proxy
  • container runtime
Вот как выглядит архитектура Kubernetes:
Позвольте мне рассказать вам о компонентах главного узла и рабочих узлов в деталях.

Мастер нода

Мастер нода управляет кластером Kubernetes и является точкой входа для всех административных задач.

Вы можете общаться с главным узлом через CLI, GUI или API.

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

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

Все остальные главные узлы будут последователями этого ведущего узла.

Кроме того, для управления состоянием кластера Kubernetes использует etcd.

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

Позвольте мне объяснить вам все об этих компонентах по очереди.

API Server

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

Scheduler

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

Controller Manager

Незаходящие контуры управления, которые регулируют состояние кластера Kubernetes, управляются controller manager, т.е. диспетчером управления.

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

Если желаемое состояние в контуре управления не соответствует текущему состоянию объекта, управляющим контуром предпринимаются корректирующие шаги для приведения текущего состояния в соответствие с желаемым.

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

etcd

Etcd – это распределенное хранилище значений ключей, которое используется для хранения состояния кластера.

Таким образом, либо он должен быть частью мастера Kubernetes, либо вы также можете настроить его внешне.

etcd записан на goLang и основан на алгоритме согласования Raft.

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

Даже если некоторые члены не работают, этот алгоритм может работать в любой момент времени.

Один из узлов в группе будет ведущим, а остальные будут ведомыми.

Может быть только один мастер, и все другие мастера должны следовать за этим мастером.

Помимо сохранения состояния кластера, etcd также используется для хранения деталей конфигурации, таких как подсети и config map.

Что такое config map в Kubernetes?

☸️ Kubectl Шпаргалка всех необходимых команд Kubernetes часть 1

Рабочая нода ( worker )

Рабочий узел – это виртуальный или физический сервер, который запускает приложения и управляется главным узлом.

Поды запланированы на рабочих узлах, которые имеют необходимые инструменты для их запуска и подключения.

Поды – это не что иное, как набор контейнеров.

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

Давайте рассмотрим компоненты рабочего узла.

Container Runtime

Container runtime в основном используется для запуска и управления непрерывным жизненным циклом на рабочем узле.

Некоторые примеры  выполнения контейнеров, которые я могу вам предоставить, это контейнеры rkt, lxc и т. д.

Часто отмечается, что docker также называется container runtime, но, если быть точным, позвольте мне сказать вам, что docker – это платформа, которая использует контейнеры как container runtime.

Kubelet

Kubelet – это агент, который работает на каждом рабочем узле и взаимодействует с главным узлом.

Итак, если у вас есть десять рабочих узлов, то kubelet запускается на каждом рабочем узле.

Он получает определение пода различными способами и запускает контейнеры, связанные с портом.

Он также гарантирует, что контейнеры, которые являются частью пода, всегда в порядке.

Kubelet подключается к среде выполнения контейнера с использованием фреймворка gRPC.

Kubelet подключается к интерфейсу среды выполнения контейнера (CRI) для выполнения контейнеров и операций с образами.

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

Эти две службы выполняют две разные операции.

Kube-proxy

Kube-proxy работает на каждом рабочем узле как сетевой прокси.
Он слушает сервер API для каждого создания или удаления точки обслуживания.
Для каждой точки обслуживания kube-proxy устанавливает маршруты, чтобы он мог добраться до нее.

Заключение

Я надеюсь, что это поможет вам лучше понять архитектуру Kubernetes.

You may also like

Leave a Comment