Стабильные улучшения: устойчивый кэш watch и KYAML
67 улучшений в v1.37 — цифра, которая ничего не говорит о вашем следующем дежурстве. Разберём два стабильных изменения, которые заметны не в чейнджлоге, а в понедельник утром.
KYAML: статус stable. Инструмент задуман как лекарство от хронических болезней YAML: чувствительности к пробелам и пресловутой «норвежской проблемы», когда значение NO неожиданно превращается в булево false. Практическая ценность в другом: каждый KYAML-файл остаётся валидным YAML. Переписывать существующие манифесты ради обратной совместимости не нужно — можно переводить конфигурацию постепенно, по одному ресурсу, и ничего не сломается на полпути.
Завершённая инициализация resilient watch cache. Здесь выгода измеряется не строками кода, а минутами простоя. Для больших кластеров это снижает риск отказов control plane: кэш наблюдений поднимается устойчивее, и API-сервер реже уходит в состояние, где операторам приходится поднимать его вручную. Если ваш кластер перевалил за несколько тысяч узлов или объектов, это тот класс изменений, который вы почувствуете именно в худший момент — или не почувствуете вовсе, что и есть цель.
Что делать с этим на практике: не гонитесь за всеми 67 пунктами сразу. Проверьте, попадает ли ваш кластер в категорию «крупных» по нагрузке на watch-механику, и оцените выигрыш от обновления там. А KYAML стоит попробовать на некритичном наборе манифестов — например, на конфигурации внутреннего стенда, — чтобы понять, удобнее ли вам новый формат, прежде чем предлагать его всей команде.
Масштабирование до нуля: HPA теперь может отключать поды
Сколько подов простаивает в вашем кластере прямо сейчас? В v1.37 функция HorizontalPodAutoscaler scale to zero получила статус beta и включена по умолчанию. Практический смысл прост: для ворклоадов, которые масштабируются по object- или external-метрикам, поды теперь могут опускаться до нуля, когда нагрузка отсутствует. Ночью очередь разбирается — реплики уходят в ноль, а не крутят минимальный набор «на всякий случай».
Когда это применять: сервисы с предсказуемыми паузами в трафике — очереди задач, пакетная обработка, внутренние API с редкими вызовами. Масштабирование по внешней метрике (например, длине очереди в брокере) даёт HPA сигнал, которого нет у метрик CPU: поды не держат запас просто потому, что процессор «спокоен, но не мёртв».
Ограничение, о котором стоит помнить: это работает для object- и external-метрик, а не как универсальная замена всем сценариям автоскейлинга. Прежде чем включать, проверьте, что ваш источник метрик корректно отдаёт ноль — иначе HPA не получит сигнал на сворачивание.
Admission control на основе манифестов: гибкость с рисками
В списке 67 улучшений v1.37 есть три пункта, которые вы ощутите быстрее, чем кажется. Первый — KYAML дошёл до статуса stable. Это ответ на конкретную боль: YAML чувствителен к пробелам, а «норвежская проблема» превращает безобидное значение в логическое. KYAML убирает такие сюрпризы, но сохраняет совместимость: каждый KYAML-файл остаётся валидным YAML, так что переписывать существующие манифесты не придётся. Проверить стоит на конфигах, где уже ловили неожиданные типы, — например, на значениях вида no или региональных кодах.
Второй пункт — beta-поддержка manifest-based admission control. Вместо того чтобы держать вебхук-сервер ради пары правил, вы описываете политики манифестом. Это снижает число подвижных частей: меньше сервисов, которые могут упасть между API-сервером и вашим подом.
Третий — alpha-версия pod-level checkpoint и restore. Возможность сохранить состояние пода и восстановить его позже пригодится для долгих задач, которые не хочется перезапускать с нуля после обновления узла. Alpha означает, что API ещё может измениться, так что место этой функции — тестовый кластер, а не продакшен.
Наконец, релиз завершает «resilient watch cache initialization» — механизм повышает устойчивость крупных кластеров и снижает риск падений control plane. Общий совет для всех перечисленных изменений один: сначала обкатайте их на стенде, где отказ никому не стоит денег, и только потом включайте по умолчанию. Первоисточник релиза — Kubernetes v1.37.
Checkpoint и restore подов: альфа-функция для критичных нагрузок
В v1.37 появилась alpha-версия pod-level checkpoint и restore. Alpha — это не «почти готово», а «попробуйте и расскажите, что сломалось». Функция выключена по умолчанию, API может измениться в следующем релизе, а поведение на нестандартных сценариях ещё не отшлифовано. Если вы ставите её в продакшен, вы фактически берёте на себя роль её тестировщика.
Что она даёт на бумаге: возможность сохранить состояние пода и восстановить его позже. Это не то же самое, что рестарт контейнера. Обычный перезапуск поднимает процесс с чистого листа — все данные, которые жили только в памяти, теряются. Checkpoint же фиксирует работающий процесс целиком, и после восстановления он продолжает с того места, где остановился.
Полезность видна на конкретных задачах. Обучение модели, которое шло шесть часов и не имеет удобных точек сохранения, — кандидат номер один: вместо повторного прогона вы восстанавливаете процесс из checkpoint. Долгие batch-задачи с промежуточным состоянием в памяти устроены так же. Даже при плановом обслуживании ноды вы можете сохранить состояние пода до вытеснения и вернуть его после.
Ограничения стоит держать в голове до того, как вы понадеетесь на функцию. Альфа-статус означает, что документация догоняет код, а не наоборот. Восстановление привязано к конкретной среде: checkpoint, снятый на одной конфигурации, не обязательно поднимется на другой. И, что важнее всего, функция не отменяет проектирования: если приложение не умеет пережить рестарт, checkpoint — это временный костыль, а не архитектурное решение.
Практический вывод простой: закладывайте checkpoint как эксперимент на изолированном кластере, а не как основу для критичного пайплайна обучения. Сначала прогоните свой самый долгий workload, посмотрите на восстановление, и только потом решайте, стоит ли переносить это в основной контур.
Устаревшая аутентификация EKS: скрытая угроза безопасности
81% кластеров EKS до сих пор используют способ аутентификации, который AWS уже признала устаревшим. Цифра из отчёта AWS — не абстрактная статистика, а описание того, что происходит в большинстве продакшенов прямо сейчас.
Речь о статичных способах доступа к API-серверу: клиентских сертификатах и токенах с длительным сроком жизни. Проблема не в том, что они работают плохо — они работают ровно до того момента, пока кто-то не получит их копию. Сертификат, выданный на год, остаётся действительным все 365 дней независимо от того, уволился ли сотрудник, чей ключ лежит в его ноутбуке.
Контраст с внешним провайдером идентичности простой. Если вы подключаете OIDC, kubectl после логина получает ID-токен и отправляет его API-серверу, а тот проверяет токен и применяет настроенные права доступа. Срок жизни такого токена — часы, а не месяцы. Отозвать доступ можно на стороне провайдера, не перевыпуская ничего в кластере.
Механика, которую стоит взять на вооружение, выглядит так: OIDC-провайдер плюс публичный клиент с PKCE. Это стандартная схема для kubectl, и она снимает главную слабость статики — бессрочность учётных данных.
Практический шаг для оператора: проверьте, чем аутентифицируются ваши кластеры. Если в kubeconfig лежат сертификаты, выданные год назад, и никто не помнит, кому именно, — это не техдолг на потом, а открытая дверь сегодня.
Источник с деталями по миграции: AWS deprecated this EKS auth method.
Практический вывод: что внедрять в первую очередь
67 улучшений в Kubernetes 1.37 — это не список задач, а повод расставить приоритеты по риску. Три вывода, которые стоит держать в голове.
Стабильность важнее новизны. Из 67 улучшений лишь 16 получили статус stable, 23 — beta, 27 — alpha и одно помечено как устаревшее. Если ваш кластер большой, в первую очередь смотрите на завершённую инициализацию resilient watch cache: она повышает устойчивость и помогает избежать отказов control plane. Остальное может подождать.
Конфигурация перестаёт быть минным полем. KYAML достиг статуса stable — это ответ на хронические проблемы YAML, включая чувствительность к пробелам и «норвежскую проблему». Каждый файл KYAML остаётся валидным YAML, так что переписывать конфигурации ради обратной совместимости не нужно. Заодно beta-статус получил HPA scale to zero: для рабочих нагрузок на object- или external-метриках поды теперь могут уходить в ноль при простое.
Управление доступом смещается к манифестам. Beta-поддержка manifest-based admission control и alpha-поддержка checkpoint и restore на уровне пода задают направление, в котором контроль над кластером переносится в декларативные файлы, а не в ручные операции.
Практический совет: не пытайтесь внедрить всё сразу. Составьте таблицу из ваших реальных болей, сопоставьте каждую с конкретным улучшением 1.37 и его статусом, и берите в работу только то, что снимает риск или ручную рутину уже сейчас. Alpha-функции держите в отдельном тестовом контуре — они ещё могут измениться.