Контроллер — один из участников управления: он поддерживает свою часть состояния. Управляющие компоненты шире и включают также API, хранилище состояния и планировщик.
Почему это важно
Чтобы исправление сохранилось, нужно знать владельца объекта. Изменение Pod, которым управляет другой объект, часто не меняет исходную цель. При диагностике проверяйте цепочку владельцев и селекторы: два несогласованных контроллера могут вмешиваться в одну нагрузку.
Что подтверждено
Контроллер наблюдает состояние и выполняет изменения через API, чтобы поддерживать цель управляемых объектов. Он может снова действовать после отклонения от этой цели.
Граница применимости: Архитектура контроллеров Kubernetes.
Пересекающиеся селекторы управляющих объектов могут заставить контроллеры вмешиваться в одни и те же Pod. Для Deployment нужно избегать такого пересечения с другими контроллерами нагрузки.
Граница применимости: Предупреждение о пересекающихся селекторах Deployment и других контроллеров Kubernetes.
Контроллер Deployment управляет ReplicaSet, а контроллер ReplicaSet — Pod. Эти объекты образуют цепочку управления; редактирование одного Pod не меняет автоматически шаблон Deployment.
Граница применимости: Управление ReplicaSet и Pod через Deployment Kubernetes.
Контроллер может создать Pod, но выбор подходящего узла выполняет планировщик. Отсутствие места для нового экземпляра нужно разбирать по требованиям и ресурсам, а не только по состоянию контроллера.
Граница применимости: Граница контроллера и планировщика Kubernetes.
Контроллер может управлять ресурсом вне самого кластера, взаимодействуя с внешней системой. Запись цели в API Kubernetes ещё не означает успешное изменение внешнего ресурса.
Граница применимости: Модель контроллеров Kubernetes, включая управление внешними системами.
Не путать
Что проверить
- Определите тип контроллера и объект, задающий цель приложения.
- Проследите владельца каждого управляемого ReplicaSet и Pod.
- Проверьте, не пересекаются ли селекторы разных контроллеров.
- Внесите постоянное изменение в шаблон или число экземпляров нужного владельца.
- Разделите ошибку создания Pod и отказ планировщика разместить уже созданный Pod.
- Для внешних ресурсов проверьте результат и в Kubernetes, и в целевой системе.
Первоисточники
Controllers
Kubernetes · Kubernetes current documentation
Определяет управляющий цикл, целевое состояние и повторяющееся согласование наблюдаемого состояния с заданным.
Открыть первоисточникDeployments
Kubernetes · Kubernetes current documentation
Описывает управление ReplicaSet, стратегии обновления, параметры maxUnavailable и maxSurge, ход выпуска и историю для отката.
Открыть первоисточникKubernetes Scheduler
Kubernetes · Kubernetes current documentation
Описывает отбор допустимых узлов, оценку вариантов и назначение узла для ещё не размещённого Pod.
Открыть первоисточникKubernetes Components
Kubernetes · Kubernetes current documentation
Описывает управляющие компоненты, узлы, сервер API, планировщик, контроллеры, kubelet и среду выполнения контейнеров.
Открыть первоисточник