Реконсиляция инфраструктуры
Что такое реконсиляция инфраструктуры
Реконсиляция инфраструктуры — это непрерывный процесс, в котором контроллеры платформы (Cluster API и связанные операторы) сравнивают желаемое состояние кластера с фактическим и вносят изменения, чтобы привести инфраструктуру в соответствие с объявленным состоянием.
Желаемое состояние задаётся ресурсами в кластере управления: например, в MachineDeployment указано количество реплик и шаблон машины, в Cluster — версия Kubernetes и параметры Control Plane. Фактическое состояние — это реально существующие объекты: Machine, Node, виртуальные машины в провайдере. Контроллеры периодически проверяют расхождения и выполняют действия: создание или удаление машин, обновление конфигурации узлов, восстановление неработоспособных узлов (в том числе по правилам MachineHealthCheck).
Зачем нужна реконсиляция
Реконсиляция обеспечивает:
- Приведение инфраструктуры к спецификации — если в MachineDeployment указано 5 узлов, а фактически 4, контроллер инициирует создание недостающей машины; при уменьшении реплик — удаление лишних.
- Реакцию на сбои — при падении узла или срабатывании MachineHealthCheck контроллер может заменить машину или пересоздать узел согласно заданным правилам.
- Применение изменений конфигурации — изменение InfraMachineTemplate, образа, размера диска и т.п. доводится до машин и узлов в ходе реконсиляции.
- Согласованность состояния — аннотации, метки, условия (conditions) ресурсов Cluster API и узлов обновляются при каждой реконсиляции.
Без реконсиляции кластер перестал бы реагировать на изменения в MachineDeployment, KubeadmControlPlane и других ресурсах, а восстановление после сбоев пришлось бы выполнять вручную.
Когда может понадобиться приостановить реконсиляцию
Приостановка реконсиляции имеет смысл в ситуациях, когда автоматические действия контроллеров мешают запланированным операциям или могут привести к лишним перезапускам и заменам узлов:
- Изменение сайзинга или конфигурации группы узлов — при изменении количества реплик, шаблона машины (CPU, память, диск) или образа контроллер сразу начинает применять изменения. Если при этом включён MachineHealthCheck, он может воспринять временную недоступность узла (перезагрузка, применение конфига) как сбой и инициировать замену узла. Приостановка реконсиляции даёт возможность спокойно изменить параметры, дождаться стабилизации узлов и лишь затем возобновить реконсиляцию.
- Плановое обслуживание узлов — при обновлении ОС, замене компонентов или ручных работах на узлах приостановка позволяет избежать того, что контроллеры будут «возвращать» состояние или запускать восстановление из-за временно недоступных узлов.
- Массовые или каскадные изменения — когда нужно применить несколько связанных изменений (например, обновить несколько групп подряд) и не допустить, чтобы контроллер реагировал на промежуточные состояния до завершения всех шагов.
- Отладка и разбор инцидентов — чтобы зафиксировать текущее состояние машин и узлов и не дать контроллеру удалить или пересоздать объекты во время анализа.
Приостановка — временная мера. После возобновления реконсиляции все накопленные изменения будут применены.
Пример использования приостановки реконсиляции из жизни см. в статье Как Штурвал управляет облаками.
Что делает приостановка реконсиляции
При приостановке реконсиляции (режим Paused):
- Контроллеры инфраструктуры временно не применяют изменения к машинам и узлам кластера: не создают и не удаляют машины, не обновляют конфигурацию по новым спецификациям, не выполняют восстановление по MachineHealthCheck.
- Все запланированные по текущим спецификациям изменения остаются в очереди и будут выполнены после возобновления реконсиляции.
- Кластер и узлы продолжают работать в текущем состоянии; меняется только то, что контроллеры перестают подстраивать инфраструктуру под желаемое состояние.
Где управлять: приостановка и возобновление реконсиляции доступны на дашборде кластера (блок с описанием кластера и переключателем приостановки). Действие доступно администратору кластера и администратору платформы.
Подробнее о месте управления в интерфейсе: Дашборд кластера.