Kubernetes компоненты: мастер компоненты

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

Мастер компоненты (Master Components)

Мастер компоненты предоставляют уровень управления кластером. Мастер компоненты принимают глобальные решения о кластере (например, планирование (scheduling)), и они обнаруживают и реагируют на события кластера (например, запускают новый pod (Наименьший и простейший Kubernetes объект. Pod представляет набор запущенных контейнеров в кластере.), когда поле replicas развертывания (deployment) не удовлетворено).

Мастер компоненты могут быть запущены на любой машине в кластере. Однако для простоты сценарии настройки обычно запускают все главные компоненты на одном компьютере и не запускают пользовательские контейнеры на этом компьютере.

kube-apiserver

Компонент на мастере, который предоставляет API Kubernetes. Это фронтенд для уровня управления Kubernetes.

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

etcd

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

Если ваш кластер Kubernetes использует etcd в качестве резервного хранилища, убедитесь, что у вас есть план резервного копирования этих данных.

kube-scheduler

Компонент на мастере, который наблюдает за вновь созданными pod'ами, которым не назначен узел (node), и выбирает узел, на котором они будут работать.

Факторы, принимаемые во внимание при планировании решений, включают индивидуальные и коллективные требования к ресурсам, аппаратные/программные/по политикам ограничения (hardware/software/policy constraints), спецификации сходства и различия, локальность данных, помехи между нагрузками и предельные сроки.

kube-controller-manager

Компонент на мастере, который запускает контроллеры (контроллер - это контрольный цикл, который наблюдает за общим состоянием кластера через apiserver и делает изменения, пытаясь довести текущее состояние до желаемого).

Логически каждый контроллер - это отдельный процесс, но для уменьшения сложности все они скомпилированы в один бинарный файл и выполняются в одном процессе.

Эти контроллеры включают в себя:

  • Контроллер узла (Node Controller): Отвечает за уведомление и реагирование при выходе из строя узлов.
  • Контроллер репликации (Replication Controller): отвечает за поддержание правильного количества pod'ов для каждого объекта контроллера репликации в системе.
  • Контроллер конечных точек (Endpoints Controller): заполняет объект конечных точек (то есть присоединяется к службам и модулям).
  • Контроллеры учетных записей и токенов службы (Service Account & Token Controllers): создание учетных записей по умолчанию и токенов доступа API для новых пространств имен.

cloud-controller-manager

cloud-controller-manager запускает контроллеры, которые взаимодействуют с базовыми облачными провайдерами. Бинарный файл cloud-controller-manager - это альфа-функция, представленная в выпуске Kubernetes 1.6.

cloud-controller-manager запускает только циклы контроллера, относящиеся к облачному провайдеру (cloud-provider-specific). Вы должны отключить эти циклы контроллера в kube-controller-manager. Вы можете отключить циклы контроллера, установив флаг --cloud-provider на external при запуске kube-controller-manager.

cloud-controller-manager позволяет коду поставщика облака и коду Kubernetes развиваться независимо друг от друга. В предыдущих выпусках основной код Kubernetes зависел от кода, специфичного для провайдера облака. В будущих выпусках код, специфичный для поставщиков облачных вычислений, должен обслуживаться самим поставщиком облачных вычислений и связываться с cloud-controller-manager во время работы Kubernetes.

Следующие контроллеры имеют зависимости поставщика облака:

  • Контроллер узла (Node Controller): для проверки поставщика облака, чтобы определить, был ли удален узел в облаке после того, как он перестал отвечать
  • Route Controller: для настройки маршрутов в базовой облачной инфраструктуре
  • Service Controller: для создания, обновления и удаления балансировщиков нагрузки облачного провайдера
  • Volume Controller: для создания, подключения и подключения томов, а также взаимодействия с облачным провайдером для организации томов

Читайте также:


Комментарии

Популярные сообщения из этого блога

Контроллеры в Kubernetes: DaemonSet

Контроллеры в Kubernetes: ReplicaSet

Контроллеры в Kubernetes: StatefulSet