К основному содержимому
ко всем лонгридам
Лонгрид#PlatformEngineering#SRE

Kubernetes: кто его усложнил? Как сложность переехала в платформы и AI-агентов

Kubernetes стал стандартом и даже заслужил высшую инженерную похвалу — «скучный». Но простым он не стал. Часть сложности родилась внутри API, часть принесли наши требования, а затем почти вся она поднялась этажом выше: в сеть, платформенную команду, золотые пути и управление полномочиями агентов. Разберём, где сложность действительно необходима, где мы создали её сами и как не построить ещё один слой, который некому будет сопровождать.

21 июля 2026≈ 16 минут

Статусы проектов и изменчивые данные проверены 21 июля 2026 года. Опросы сообщества, вендорская телеметрия и мнения практиков в тексте разделены: ни один узкий сравнительный тест или коммерческий отчёт не используется как универсальная истина. Финальная карта оценки — авторская управленческая эвристика, а не отраслевой норматив.

01

Компонент половины наблюдаемых окружений — на двух добровольцах

В ноябре 2025 года SIG Network и Kubernetes Security Response Committee объявили о закрытии ingress-nginx. Поддержка закончилась в марте 2026-го: после этого нет новых релизов, исправлений ошибок и патчей безопасности. Существующие инсталляции продолжают работать — и именно поэтому риск легко не заметить. В январском заявлении Steering Committee ссылался на внутреннее исследование Datadog: ingress-nginx использовался примерно в половине облачно-ориентированных окружений. Это выборка одного поставщика наблюдаемости, а не перепись рынка.

Масштаб сам по себе впечатляет меньше, чем причина. Проект годами поддерживали один-два человека в свободное время после работы. Его гибкость — особенно возможность вставлять произвольные фрагменты NGINX через snippet-аннотации — постепенно превратилась из достоинства в технический долг, который сами авторы объявления назвали непреодолимым. В 2021 году уже было известно, что snippets способны открыть доступ к секретам кластера. В марте 2025-го цепочка IngressNightmare довела тот же класс риска до неаутентифицированного RCE.

Это не история про один неудачный контроллер. Это модель всей экосистемы: маленький API не покрывает реальную задачу, escape hatch превращается в неформальный язык программирования, популярность растёт быстрее ответственности, а накопленную сложность замечают только тогда, когда убрать слой уже невозможно.

Поэтому вопрос «кто усложнил Kubernetes?» не имеет одного обвиняемого. Апстрим создавал API с ошибочными границами. Вендоры и пользователи расширяли их под рабочую эксплуатацию. Организации хотели централизованное соответствие требованиям, мультитенантность, сервисную сетку, собственные и всё новые нагрузки. А платформенные команды обещали, что ещё один слой скроет предыдущие. В результате сложность не исчезала — меняла владельца.

схема 01 · сложность поднимается вместе с уровнем абстракции
Сложность Kubernetes переехала вверхсложность не исчезла — её переместилиЯдро Kubernetesпланировщик · API · согласованиеРасширенияCRD · операторы · политикиПлатформазолотые пути · порталы · защитные ограниченияУправление агентамиидентичность · полномочия · аудитрастутответственность икогнитивная нагрузка
02

Два бюджета сложности: задача и наши решения

Kubernetes управляет распределённой системой, в которой процессы падают, сеть разделяется, конфигурация меняется асинхронно, а желаемое состояние должно сходиться с фактическим. Эта сложность существенна: она существовала и в Borg, и в самописных scheduler, и в shell-скриптах. Удаление Kubernetes не отменяет обнаружение сервисов, , изоляцию, планирование мощности или восстановление. Оно лишь меняет место, где эти задачи решаются.

Но есть и случайная сложность. PodSecurityPolicy прожила несколько лет, была объявлена deprecated в 1.21 и удалена в 1.25. NetworkPolicy сознательно не получила deny-правил и кластерных дефолтов, поэтому для централизованного контроля понадобился отдельный AdminNetworkPolicy API. Policy-движки росли вне ядра, а затем Kubernetes вернул часть их функций в apiserver через ValidatingAdmissionPolicy на CEL. Это не «требования бизнеса». Это последовательность архитектурных решений, некоторые из которых пришлось пересматривать.

Период
2014–2015
Сдвиг
Kubernetes открыт и достигает 1.0
Что изменилось
Общий API для оркестрации становится ставкой индустрии
Период
2016–2019
Сдвиг
Операторы и CRD
Что изменилось
Платформа превращается в конструктор других платформ
Период
2021–2024
Сдвиг
PSP уходит, CEL приходит
Что изменилось
Ядро исправляет собственные API и возвращает часть логики политик
Период
2025–2026
Сдвиг
Ingress NGINX закрыт, Gateway API 1.6
Что изменилось
Скрытая сложность аннотаций заменяется явной моделью ролей и политик

Тим Хокин, один из создателей Kubernetes, сформулировал это как конечный бюджет сложности: каждая фича тратит не только строки кода, но и способность проекта объяснять, тестировать и когда-нибудь менять своё поведение. Для расширяемой системы проблема особенно остра. CRD — её сильнейший механизм и одновременно способ превратить кластер в сборку из десятков независимых продуктов с разными циклами обновления.

Почему тогда Kubernetes называют boring?

CNCF Annual Survey 2025 сообщает, что 82% пользователей контейнеров запускают Kubernetes в рабочей среде, а сложность называют препятствием 34% респондентов. Выше оказались культурные изменения, обучение и безопасность. Это сильный контраргумент катастрофическому нарративу: API стабилизировались, managed-сервисы стали обычными, операционные паттерны известны, а технология перестала быть экспериментом.

Но опрос внедрения и стоимость эксплуатации отвечают на разные вопросы. «Нам не страшно внедрять Kubernetes» не означает «нам дёшево и просто его сопровождать». Когда сложность становится отдельной функцией платформы, продуктовая команда действительно перестаёт видеть большую её часть. Система стала скучнее для пользователя — и толще для владельца.

03

Ingress → Gateway API: сложность стала явной

Оригинальный Ingress API был намеренно маленьким: узел, путь, сервер назначения и TLS. В нём не было общего языка для таймаутов, повторных попыток, канареечных выпусков, внешней авторизации, переписывания заголовков или WAF. Контроллеры закрыли разрыв аннотациями. К июлю 2026 года документация ingress-nginx содержала около 130 уникальных ключей, а фрагменты позволяли вставлять необработанную конфигурацию NGINX. Локальная простота API породила глобальный, непереносимый DSL.

Gateway API отвечает не сокращением YAML, а явной моделью. GatewayClass принадлежит инфраструктурному провайдеру, Gateway — оператору кластера, Route — приложению. ReferenceGrant ограничивает межнеймспейсные ссылки, status сообщает, что реально принято контроллером, а политики получают формальное место вместо случайной строки в metadata. На дату статьи актуальна ветка 1.6.x; TCPRoute и UDPRoute достигли GA.

схема 02 · аннотационный escape hatch сменяется явной моделью
От скрытой сложности Ingress к явному Gateway APIпростой синтаксис не сделал систему простойМаленький Ingress APIузел · путь · сервер назначенияОбход через аннотации~130 ключей + фрагментыSecurity debt2021 warning → 2025 RCEGateway API 1.6роли · маршруты · политикиGateway API многословнее — зато ответственность, привязка и состояние становятся видимыми

Цена тоже стала явной. Один маршрут теперь связан с несколькими ресурсами, а привязка политик должна решать наследование, конфликты, обнаружение и разветвление статусов. Авторы GEP-713 сами признают, что механизм сложнее желаемого. Но это другой класс сложности: её можно валидировать, наблюдать и распределять между ролями. Аннотация выглядела проще только до первого расследования.

eBPF не отменяет этот вывод

eBPF дал Cilium сильную плоскость данных и решил задачи гиперскейла, но не является универсальным ответом на сетевую сложность. nftables-режим kube-proxy достиг GA в Kubernetes 1.33 и устранил линейный поиск по iptables-цепочкам без замены всего CNI. Режим ambient в Istio убрал sidecar-прокси из каждого пода через Rust-компонент ztunnel, а не через обязательный eBPF. Громкие ускорения из миллионов контейнеров нельзя автоматически переносить на кластер из пятидесяти нод. Новая плоскость данных полезна, если решает измеренную проблему, а не потому, что предыдущий слой выглядит старым.

04

Много кластеров — не то же самое, что много границ отказа

Разделение на кластеры полезно: разный , версии, регионы, арендаторы и требования к обновлениям. Но само число контуров управления ничего не гарантирует. В марте 2023 года Datadog потерял сеть более чем на 60% экземпляров в пяти регионах и трёх облаках. Исправление безопасности systemd приехало через общий механизм автообновлений и удалило маршруты Cilium. Флот был распределён географически и провайдерски, но оставался коррелирован через образ ОС и политику обновления.

схема 03 · коррелированные слои пересекают границы кластеров
Число кластеров не определяет радиус поражениячетыре кластера могут разделить один отказкластер 1кластер 2кластер 3кластер 4Коррелированные общие слоиобраз ОС · CNI · узел GitOps · цепочка поставки · политика обновленийнезависимость — свойство архитектуры, а не количество объектов

Та же ловушка встречается в радиальной схеме GitOps, едином реестре, глобальном поставщике идентификации, общем обработчике допуска и одном шаблоне Cluster API. Сотня кластеров, обновляемых одной политикой за час, — это один с сотней контуров управления. Настоящая независимость требует разнести не только среды выполнения, но и пути доставки изменений, доверие, артефакты и полномочия.

У количества кластеров есть и прямая цена. В EKS обычная поддержка контура управления тарифицируется по $0,10 в час, а расширенная поддержка старой версии — по $0,60 (прайс на июль 2026 года). На флоте из пятидесяти кластеров отложенные обновления превращаются из неудобства в отдельную бюджетную строку. Многокластерная схема имеет смысл как осознанная модель изоляции, а не как рефлекс «поднимем ещё один».

Практический вопрос для архитектурного ревью: какие пять общих слоёв всё ещё способны изменить все кластеры одновременно? Этот список полезнее диаграммы с количеством регионов.
05

IDP поглотила сложность — и стала отдельной системой

Платформенная инженерия появилась не потому, что разработчики захотели ещё один портал. Kubernetes стандартизировал среду выполнения, но оставил продуктовой команде слишком много решений: пакет развёртывания, политики, сеть, наблюдаемость, секреты, поэтапный запуск и ответственность. собрала эти решения в и предложила вместо тикетов. Team Topologies дала для этого правильную цель — снижать когнитивную нагрузку — и полезное ограничение: Thinnest Viable Platform может быть не порталом, а курированным набором договорённостей.

Backstage показал продуктовую форму: каталог, шаблоны, документация, плагины. В больших организациях она естественна. У Авито платформа обслуживает тысячи сервисов и прячет Kubernetes за app.toml и CLI. У Ozon единообразие важнее локальной идеальности. Т-Банк строит собственную платформу с конца 2020 года командой примерно из пятидесяти человек. Эти кейсы доказывают не то, что IDP нужна всем, а то, сколько масштаба и устойчивой ответственности требуется для настоящего внутреннего PaaS.

Разработчику лучше, системе — не обязательно

DORA 2024 зафиксировала парадокс: использование внутренней платформы связано с ростом индивидуальной продуктивности на 8% и командной на 10%, но одновременно со снижением на 8% и стабильности изменений на 14%. Авторы предлагают осторожную интерпретацию через J-curve: незрелая платформа сначала добавляет переходные издержки. Возможны и менее удобные объяснения — дополнительная очередь, слишком толстая абстракция или платформа, оптимизированная по удовлетворённости вместо потока.

схема 04 · локальный DevEx и системная поставка изменений могут расходиться
Парадокс внутренней платформыразработчику быстрее, а поставка изменений может стать хужеЛокальный опыт+8% individual productivity+10% team performanceСистема поставки изменений−8% пропускной способности−14% стабильности измененийЗолотой путь легитимен, пока измеряет результат,сохраняет обходной путь и заслуживает внедрения

Здесь проходит граница между золотым путём и золотой клеткой. Сэм Ньюман предупреждает: обязательная платформа теряет стимул быть удобной, потому что пользователь не может уйти. С другой стороны, безопасность, соблюдение требований и аудит не работают как факультативная рекомендация. Разрешить всё — не продуктовый подход. Запретить любой выход — тоже. Легитимный мандат ограничивается проверяемыми инвариантами, а не конкретной реализацией каждого шага.

  • обязательны идентификация, журнал аудита, шифрование и свидетельства соблюдения политик;
  • предпочтительны, но заменяемы шаблон сервиса, CI/CD и интерфейс самообслуживания;
  • исключения имеют владельца, срок жизни и цену сопровождения;
  • платформа измеряет не число созданных компонентов, а время поставки, надёжность и долю безопасно завершённых сценариев.
06

Новый цикл: GPU и агенты вместо kubectl

AI-нагрузки снова показали границу исходной модели Kubernetes. Среда подключаемых устройств появилась в 1.8, но долго видела GPU только как целое число. MIG, разделение по времени, отдельные планировщики и GPU Operator закрывали разрыв каждый своим способом. Dynamic Resource Allocation достиг GA в 1.34 после редизайна API, а дробная ёмкость всё ещё развивалась отдельно. Это тот же цикл: маленький примитив, растущие требования, экосистема костылей и более явная модель в ядре.

CNCF называет Kubernetes де-факто операционной системой для AI, а поставщики оптимизаторов планирования по своей телеметрии сообщают о низкой утилизации дорогих GPU. Второе я привожу как наблюдение из их публикаций, а не как измерение индустрии: сводного исследования утилизации с раскрытой методикой у меня нет. Такие цифры нельзя смешивать: первая описывает внедрение среди контейнерных пользователей, вторая — телеметрию конкретного оптимизатора с собственной выборкой. Вместе они формулируют хороший вопрос: помогает ли стандарт управлять нагрузкой или лишь делает знакомым интерфейс к новой неэффективности?

Убрать человека от kubectl хотели до LLM

Ещё в 2017 году Келси Хайтауэр сравнивал kubectl с новым SSH: прямое управление рабочей средой человеком — симптом отсутствующего более высокого интерфейса. Сегодня эту роль примеряют K8sGPT, kubectl-ai, HolmesGPT, kagent и MCP-серверы. Но ассистирование нельзя выдавать за автономность. ITBench от IBM Research содержит 94 воспроизводимых SRE, CISO и FinOps сценария; лучшие агенты в исходной работе решили 13,8% SRE-задач, 25,2% задач безопасности и ни одной FinOps-задачи. Это далеко от права свободно менять рабочую среду.

Полезный агент начинается с диагностики только для чтения, наследует идентификацию и RBAC пользователя, показывает свидетельства и умеет передать расследование человеку. Де-факто популярный Kubernetes MCP Server из организации containers идёт напрямую в API server и имеет режимы --read-only и --disable-destructive. Наличие флага — ещё не полноценное управление, но оно правильно обозначает границу: право читать кластер и право менять его — разные продукты с разными проверками.

схема 05 · полномочия агента растут только вместе с доказательствами
Лестница управления для Kubernetes-агентовполномочия должны расти медленнее возможностей01читать02рекомендовать03согласовать04действовать05откатитьна каждом шаге нужны идентичность · политика · доказательства · передача человеку

Здесь и начинается агентами. Лестница read → recommend → approve → act → rollback должна быть привязана не к «умности модели», а к конкретной возможности. Для перезапуска Pod, отката выпуска и вывода узла из работы нужны разные политики, , радиус поражения и критерии остановки. На каждом уровне сохраняются идентификация, решение политики, трейс, передача человеку и проверенный откат. Иначе агент становится новым фрагментом: удобным обходным путём, который однажды превратится в неуправляемый API.

07

Как не добавить следующий слой слишком рано

Вопрос «нужен ли Kubernetes?» слишком грубый. Нужно выбрать толщину операционной модели. Команде из десяти человек может хватить Docker и управляемое развёртывание. Десяткам команд может быть нужен общий Kubernetes API, но не собственный портал. Полноценная IDP оправдана, когда повторяемый спрос, соответствие требованиям и стоимость координации действительно больше стоимости отдельного платформенного продукта.

схема 06 · масштаб полезен только вместе со зрелостью платформы
Когда Kubernetes уместен
Количество сервисов и командЗрелость платформыПока не нужноСильный кандидатРаноОпасная зонаЕсть зрелый PaaS и мало вариативностиМного сервисов и есть платформенная командаСложность выше реальной пользыМасштаб уже есть, зрелости еще нет
Модель
Простое развёртывание
Когда уместна
Небольшое число сервисов, одна команда, предсказуемый трафик
Что даёт
Минимальная поверхность отказа
Главный риск
Ручные операции и предел роста
Модель
Управляемый Kubernetes
Когда уместна
Нужны API оркестрации и экосистема, но не свой контур управления
Что даёт
Стандарт и управляемая база
Главный риск
Эксплуатационный слой всё равно остаётся у вас
Модель
Тонкая платформа
Когда уместна
Несколько команд повторяют один путь поставки изменений
Что даёт
Шаблоны, политики и самообслуживание без собственного SaaS
Главный риск
Нужно жёстко ограничивать толщину
Модель
Полноценная IDP
Когда уместна
Много команд, высокие требования к соответствию и отдельная функция платформенного продукта
Что даёт
Единый интерфейс и управляемые золотые пути
Главный риск
Монополия, протекающие абстракции и отдельный продукт в эксплуатации

Карта оценки перед новым слоем

Это не сравнительный тест зрелости и не универсальный порог по числу разработчиков. Это шесть вопросов, которые заставляют посчитать цену ответственности до того, как появится ещё один обязательный API.

Проверка
Проблема
Вопрос
Какую наблюдаемую боль снимает новый слой?
Достаточное свидетельство
Не «нужен портал», а, например, медиана времени поставки и доля ручных согласований
Проверка
Владелец
Вопрос
Кто дежурит и обновляет слой через три года?
Достаточное свидетельство
Команда, бюджет, SLO, дежурство и путь эскалации
Проверка
Граница
Вопрос
Что остаётся общим и коррелированным?
Достаточное свидетельство
ОС, CNI, центральный узел GitOps, реестр, идентификация, движок политик
Проверка
Выход
Вопрос
Можно ли обойти абстракцию безопасно?
Достаточное свидетельство
Документированный обходной путь и понятная цена исключения
Проверка
Метрика
Вопрос
Что должно улучшиться у всей системы?
Достаточное свидетельство
Пропускная способность и стабильность вместе с опытом разработчиков, а не только удовлетворённость
Проверка
Удаление
Вопрос
Как слой будет выключен, если не окупится?
Достаточное свидетельство
Критерий закрытия, экспорт состояния и обратимая миграция

Если нет измеримой проблемы, постоянного владельца и плана удаления, безопаснее не строить слой. Если проблема существует, но пользователей мало, начинайте с TVP: документации, шаблона и одной хорошо наблюдаемой возможности. Портал, контур управления и агент появляются только после того, как доказан повторяемый спрос.

И это возвращает к вопросу из заголовка. Kubernetes усложнили не архитекторы ядра и не авторы YAML: сложность переехала туда, где её никто не считает бюджетом — в аннотации контроллеров, в платформенную команду, в подсказку агента. Вопрос «кто его усложнил» на практике звучит иначе: кто согласится дежурить по этому слою через три года и чем он будет мерить, что слой окупился. Пока на него нет ответа с именем и метрикой, следующий слой добавлять рано.

Выводы

Что стоит унести с собой

  1. 01У Kubernetes есть и существенная сложность распределённых систем, и случайная сложность собственных API. Списывать всё на требования пользователей так же неверно, как винить только YAML.
  2. 02Зрелость сделала Kubernetes привычным, но не бесплатным: значительная часть сложности переехала в эксплуатацию, платформенную команду и общий набор защитных ограничений.
  3. 03Gateway API не обязательно короче Ingress. Его преимущество в другом: роли, связи, статусы и политики становятся явными и поэтому управляемыми.
  4. 04Много кластеров не означает много независимых доменов отказа. Радиус поражения задают общие коррелированные слои и одинаковые механизмы обновления.
  5. 05IDP и AI-агенты полезны не тогда, когда скрывают Kubernetes любой ценой, а когда ограничивают полномочия, сохраняют путь отладки и улучшают системные метрики поставки изменений.
Источники

Первичные материалы, исследования и позиции практиков

Эволюция Kubernetes

  1. Kubernetes · 10 Years of Kubernetesхронология проекта и исходные инженерные предпосылки
  2. ACM Queue · Borg, Omega, and Kubernetesархитектурное происхождение и цена конфигурационной гибкости
  3. The New Stack · Kubernetes Needs a Complexity Budgetпозиция сооснователя проекта о конечном бюджете сложности
  4. Kubernetes · PodSecurityPolicy Deprecationпример API, созданного и удалённого внутри проекта
  5. Kubernetes · ValidatingAdmissionPolicy GAвстроенная policy-валидация на CEL

Исследования рынка

  1. CNCF · Annual Cloud Native Survey 2025внедрение в рабочей среде, препятствия и формула «Kubernetes стал скучным»

Сеть и маршрутизация

  1. Wiz · IngressNightmareпервичное раскрытие цепочки уязвимостей; источник — security-вендор
  2. Kubernetes · Ingress NGINX Retirementофициальные причины закрытия и срок окончания поддержки
  3. Kubernetes · Steering and SRC Statementмасштаб использования и предупреждение о миграции
  4. Gateway API · Releasesактуальная ветка 1.6.x и статусы API
  5. Gateway API · GEP-713 Policy Attachmentмодель политик и признанные сложности discoverability
  6. Kubernetes · nftables mode for kube-proxyванильная альтернатива линейным iptables-цепочкам
  7. Istio · Ambient mode reaches GAsidecar-less dataplane без обязательного eBPF

Надёжность флота

  1. Datadog · Platform-level outage postmortemкоррелированный отказ через общий образ ОС и CNI
  2. AWS · EKS pricingстоимость контура управления и продлённой поддержки

Платформенная инженерия

  1. Team Topologies · Thinnest Viable Platformминимальная достаточная платформа как контрвес внутреннему PaaS
  2. Backstage · Public launchисходная продуктовая модель портала разработчика
  3. DORA · Accelerate State of DevOps 2024продуктивность платформ и компромисс между пропускной способностью и стабильностью
  4. Sam Newman · Don't Call It A Platformкритика обязательных платформ и монопольного внутреннего продукта
  5. Charity Majors · The Future of Ops Is Platform Engineeringпозиция «запускайте меньше своего софта» и требования к эксплуатационной компетенции

Российские кейсы

  1. Avito · Internal Developer Platformone-button модель и скрытие Kubernetes от продуктовых команд
  2. T-Bank · Platform Engineeringмасштаб, команда и длительность собственной платформы
  3. DevOpsConf · Why Internal Platforms Failинтервью российских платформенных лидеров и критика мандата

AI-нагрузки и агенты

  1. Kubernetes · DRA in v1.34новая модель динамического выделения устройств
  2. IBM Research · ITBench94 воспроизводимых сценария по SRE, безопасности и FinOps
  3. containers · Kubernetes MCP Serverнативный API-клиент, режим только на чтение и контроль разрушающих действий
Поделиться
TelegramLinkedIn