ТЕХНОЛОГИИ

ConfigMap изменён, процесс видит старое: env, volume и subPath

В этом материале
ГЛАВНОЕ ЗА МИНУТУ

Изменённый ConfigMap не гарантирует немедленное изменение процесса. Env values фиксируются при старте, volume projection обновляется с задержкой, а subPath mount не получает обычные обновления. Затем само приложение должно перечитать файл: Kubernetes не выполняет это за него.

Изменённый ConfigMap не гарантирует немедленное изменение процесса. Env values фиксируются при старте, volume projection обновляется с задержкой, а subPath mount не получает обычные обновления. Затем само приложение должно перечитать файл: Kubernetes не выполняет это за него.

Определите способ потребления

Сохраните Pod template, имя ConfigMap, UID Pod и способ ссылки: env, envFrom или volumeMount. У одного приложения разные параметры могут приходить разными путями. Убедитесь, что изменён объект в нужном namespace и что Pod использует именно его. Сравнение файла на ноутбуке с действующим процессом не подтверждает применение конфигурации. Для проверки выберите безопасный несекретный параметр, значение которого можно однозначно увидеть без публикации внутренних данных или выполнения тяжёлой операции.

Официальный источник 1.

Разделите три обновления

Env из ConfigMap автоматически не обновляется в уже работающем процессе; нужен новый Pod. Смонтированные ключи volume со временем обновляются по механизму kubelet sync/cache. При subPath автоматического обновления не происходит. Даже обновлённый файл может оставаться непрочитанным приложением, если оно загружает configuration только при старте. Поэтому проверяйте object version, projected file и effective application setting отдельно. Сохраните настройки detection strategy, если оператор имеет доступ к этой части кластера.

Официальный источник 2.

Разберите старое значение

В учебном опыте ConfigMap содержит batch_profile=small. Оператор меняет его на medium, но процесс продолжает использовать small из env. Ожидание очередного sync не поможет такому способу потребления. Если параметр поступает из volume, сравнивают обновление файла и предусмотренный reload. Имена профилей условны и не рекомендуют параметры LLM engine. Сценарий показывает только lifecycle configuration и необходимость подтвердить, какой источник реально читает программа.

УровеньНаблюдаемое подтверждение
API objectНужное содержимое ConfigMap
EnvЗначение при создании процесса
Volume fileПолученное projection содержимое
ПриложениеФактически применённый setting

Выберите reload или rollout

Используйте documented reload приложения, если он предусмотрен и проверен. Иначе спланируйте замену Pod с доступным ресурсным бюджетом. Для versioned или immutable ConfigMap создайте новый объект и измените ссылку в template, сохранив предыдущую для rollback. Не удаляйте старый объект до завершения перехода, если он нужен работающим Pod. Отдельно проверьте совместимость образа и configuration: возврат контейнерного digest не восстанавливает внешний изменяемый ConfigMap автоматически.

Проверьте новый процесс

После изменения подтвердите файл или env, затем эффективное поведение приложения на безопасном тесте. Сохраните manifest, object reference, время projection и момент применения. Если reload не поддерживается, успех должен относиться к новому UID Pod, а не старой интерактивной сессии. Артефакт помогает отличить задержку kubelet от read-once поведения программы. Эти границы нужно повторно проверить после изменения способа mount, чтобы привычное ожидание обновления не стало неверным после перехода на subPath или env.

Связанные разборы: software stack reproducibility; gpu maintenance change register.

← Все материалы