Machine Configuration управляет обновлениями файлов, управлением systemd-юнитами и развертыванием публичных SSH-ключей на узлах кластера. Система предоставляет Custom Resource Definition (CRD) MachineConfig для записи конфигурационных файлов на хостах и CRD MachineConfigPool для организации узлов в группы конфигураций.
Каждый MachineConfigPool управляет набором узлов и связанными с ними MachineConfigs. Роли узлов определяют членство в MachineConfigPool — пулы управляют узлами на основе их меток ролей.
Во время установки кластера система автоматически создаёт два MachineConfigPools (master и worker) вместе с двумя пустыми MachineConfigs (00-master и 00-worker). Пул master управляет конфигурацией 00-master, а пул worker — конфигурацией 00-worker.
Вы можете создавать пользовательские MachineConfigPools для рабочих узлов, которым требуются специализированные конфигурации. Мастер-узлы не могут использовать пользовательские пулы.
Пользовательские MachineConfigPools наследуют все конфигурации от пула worker и добавляют свои собственные настройки. Любые изменения в пуле worker автоматически распространяются на пользовательские пулы. Machine Configuration не поддерживает пользовательские пулы, которые не наследуют конфигурации от пула worker.
В кластере есть дефолтный MachineConfiguration CR с именем "cluster" для настройки глобальной политики обновления узлов. Подробнее см. документацию по Node Disruption Policy.
Иногда конфигурация узлов отклоняется от заданного состояния. machine-config-daemon постоянно отслеживает отклонения конфигурации и помечает затронутые узлы как Degraded, пока администратор не решит проблему. Узлы в состоянии Degraded остаются работоспособными, но не могут получать обновления.
Обработка конфигураций
MachineConfigs обрабатываются в алфавитном порядке. Первая конфигурация служит базовой, а последующие накладываются поверх неё. Каждый MachineConfigPool рендерит управляемые им конфигурации в один MachineConfig с именем: render-<pool-name>-<content-hash>
, который применяется ко всем узлам этого пула.
Стратегия обновления
Machine Configuration обновляет узлы по возрасту, начиная с самых старых. Поле maxUnavailable
в каждом MachineConfigPool контролирует, сколько узлов обновляется одновременно.
Область управления
Machine Configuration управляет только явно настроенными элементами. Ручные изменения системы остаются без вмешательства Machine Configuration Operator.
Формат конфигурации
Все MachineConfigs используют спецификацию Ignition v3.4.0.
Обнаружение отклонений
Если файлы, управляемые Machine Configuration, изменяются вне системы, machine-config-daemon помечает узел как Degraded, но не перезаписывает изменённые файлы.
Преимущества пулов
MachineConfigPools гарантируют, что новые узлы автоматически получают правильную конфигурацию при присоединении к кластеру.
Поддерживаемые изменения
Machine Configuration не создаёт пользователей или группы. Пользователь boot и группа должны быть созданы заранее для настройки SSH-ключей.
Важно: избегайте ручных изменений узлов — они могут вызвать конфликты конфигураций.
Файлы
Создание или изменение содержимого и прав доступа файлов. Файлы можно управлять только если их раздел доступен для записи.
systemd-юниты
Определение новых systemd-сервисов или расширение существующих дополнительной конфигурацией.
Публичные SSH-ключи
Настройка SSH-доступа для пользователя boot. Ключи для других пользователей считаются недействительными.
При применении MachineConfig Machine Configuration гарантирует, что все затронутые узлы достигнут желаемого состояния. Machine Configuration Operator генерирует новую рендеренную конфигурацию, а machine-config-daemon выполняет на каждом узле следующие шаги:
Проверьте статус пула командой:
Пример вывода:
Описание полей:
True
, если все узлы имеют текущую конфигурацию; False
во время обновленияTrue
, если хотя бы один узел обновляется; False
, если все актуальныTrue
, если конфигурация не может быть применена хотя бы к одному узлуВ этом примере все три мастер-узла актуальны, а пул worker обновляется — два узла завершили обновление, один в процессе.
Получите подробную информацию о пуле:
Просмотрите все MachineConfigs:
Пример вывода:
Изучите конкретную конфигурацию:
Проверьте статус отдельного узла:
Пример вывода:
Описание состояний узла:
Done
: узел здоров, желаемая и текущая конфигурации совпадаютWorking
: узел обновляется (текущая ≠ желаемой)Degraded
: обнаружено отклонение конфигурации или сбой применения — проверьте логи для выяснения причины