Обзор исходного кода Kubernetes: Kube-controller-manager

Kube-controller-manager
Kube-controller-manager — это двоичный файл, запускающий контроллеры, которые представляют собой контуры управления, поставляемые с Kubernetes. Примерами контроллеров являются контроллер развертывания, контроллер сервисов, контроллер заданий, контроллер пространства имен, контроллер ReplicaSet, контроллер конечных точек и так далее.

1. Введение
В этой статье представлен обзор исходного кода kube-controller-manager в каталоге kubernetes/cmd/kube-controller-manager, который включает разбор параметров и инициализацию различных типов контроллеров. Для кода в модуле kubernetes/pkg/controller дальнейший обзор будет представлен позже.

Структура кода kube-controller-manager выглядит следующим образом:

Следующие фрагменты кода основаны на версии Kubernetes v1.24.

Исходный код находится по адресу https://github.com/kubernetes/kubernetes/blob/release-1.24/cmd/kube-controller-manager/controller-manager.go.

2. Главная функция
Основная функция kube-controller-manager очень чистая.

3. NewControllerManagerCommand
NewControllerManagerCommand создает объект *cobra.Command с параметрами по умолчанию.

4. Run
Run запускает kube-controller-manager.

Основными функциями являются CreateControllerContext, StartControllers и NewControllerInitializers.

4.1 CreateControllerContext
CreateControllerContext создает контекстную структуру, содержащую ссылки на ресурсы, необходимые контроллерам, такие как облачный провайдер и clientBuilder.

4.2 NewControllerInitializers
NewControllerInitializers — это публичная карта именованных групп контроллеров, сопоставленных с их InitFunc. Это позволяет структурировать состав и подразделение нисходящего потока.

NewControllerInitializers

4.3 StartControllers
StartControllers запускает набор контроллеров с указанным ControllerContext.

StartControllers

4.4 InitFunc
InitFunc используется для запуска определенного контроллера. Она возвращает контроллер, который по желанию может реализовывать другие интерфейсы, чтобы менеджер контроллеров мог поддерживать запрошенные функции. Значение bool указывает, был ли контроллер включен.

type InitFunc func(ctx context.Context, controllerCtx ControllerContext) (controller controller.Interface, enabled bool, err error)

**5. Некоторые функции стартового контроллера

  1. 1 startJobController**startJobController создает новый JobController и запускает горутину, отвечающую за просмотр и синхронизацию заданий.

startJobController
5.2 startDeploymentController
startDeploymentController создает новый DeploymentController и запускает программу, отвечающую за просмотр и синхронизацию развертываний.

startDeploymentController
5.3 startReplicaSetController
startReplicaSetController конфигурирует новый контроллер ReplicaSetController и начинает просмотр и синхронизацию наборов ReplicaSet.

startReplicaSetController

Завершение
На следующей диаграмме показан обзорный поток** kube-controller-manager**:

поток обзора

Оцените статью
devanswers.ru
Добавить комментарий