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