Обновить
128K+

Kubernetes *

ПО для работы с контейнерными приложениями

62,78
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Как на самом деле устроен кэш в controller-runtime, и почему ваш оператор не кладёт apiserver

Уровень сложностиСложный
Время на прочтение21 мин
Охват и читатели4.8K

Kubernetes давно стал повсеместной платформой, а написать к нему собственный оператор сегодня — задача нескольких часов. Стандартный путь — kubebuilder на основе controller-runtime: scaffold проекта, типы, реконсайлер. В типовых сценариях этого вполне достаточно. Но как только нагрузка растёт или поведение оператора начинает расходиться с ожиданиями, всплывает целый класс edge-кейсов, причина которых — непонимание того, как controller-runtime устроен внутри. Если вы пишете контроллеры для Kubernetes, этот материал поможет собрать целостную mental model и заранее избежать дорогих сюрпризов в проде.

В этой статье разберём внутреннее устройство controller-runtime и на его примере увидим, какие архитектурные решения лежат в основе самого Kubernetes. Начнём с того, как контроллеры читают объекты из Kubernetes API.

Есть распространённое заблуждение, что r.Get() в Reconcile ходит прямо в kube-apiserver, List() каждый раз смотрит «живую» картину мира, а после Update() можно сразу перечитать объект и увидеть свежее состояние. На практике всё наоборот: controller-runtime живёт на локальной копии данных через LIST+WATCH. Благодаря этому чтение в реконсайле обходится почти бесплатно и не нагружает control plane даже при сотнях вызовов в секунду — но ценой этой модели становится то, что оператор может внезапно съедать гигабайты памяти, делать скрытые O(n)-сканы и регулярно упираться в stale reads.

Статья рассчитана на тех, кто уже писал операторы на Go с использованием controller-runtime, но хочет собрать целостную mental model, а не жить с набором частных наблюдений. Фокус будет на практических последствиях для production-кластеров: память, трафик, консистентность чтения и поведение реконсайла.

Читать далее

Новости

Как Runtime Radar помогает обнаруживать атаки на цепочку поставок: кейс LiteLLM

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели5.3K

Всем привет! Это Сергей Зюкин, разработчик экспертизы runtime-radar — опенсорсного продукта, обеспечивающего безопасность контейнерной среды выполнения. Я подготовил для вас статью, в которой расскажу, как можно обнаружить инфостилер, встроенный в библиотеку LiteLLM в результате ее недавней компрометации. Помимо этого, мы, конечно же, рассмотрим и боковое перемещение внутри Kubernetes-инфрастуктуры, которое происходит, если скрипт инфостилера запускается в поде с достаточными привилегиями.

Мы не смогли удержаться и проверили, что Runtime Radar может обнаружить при реализации подобной атаки.

Но обо всем по порядку.

Читать далее

Внедрение Kubernetes-операторов в корпоративных средах

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели4.9K

Kubernetes-операторы стали краеугольным камнем современного управления инфраструктурой. Операторы автоматизируют сложные жизненного цикла - развертывание, конфигурацию, масштабирование, резервное копирование и восстановление.

Однако в корпоративных средах внедрение операторов порождает дополнительные вызовы, включая регуляторные ограничения и необходимость внедрить процессы согласования и обеспечить аудитопригодность на всех этапах эксплуатации.

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

Читать далее

kubectl describe pod: как читать вывод, в котором Kubernetes уже написал причину

Уровень сложностиСредний
Время на прочтение22 мин
Охват и читатели9.8K

Статья о том, как читать kubectl describe pod не как длинный вывод, а как историю жизни Pod«а: кто его создал, куда его пытались поставить, скачался ли image, стартовали ли init containers, что случилось с probes, volumes, restarts и Events.»

Постарался сделать материал дружелюбным для джунов и мидлов, но без упрощения до «введите команду и посмотрите статус». Тут много реальной эксплуатации: Pending, CrashLoopBackOff, ImagePullBackOff, OOMKilled, FailedMount, CreateContainerConfigError, Evicted и любимое «Pod Running, но сервис не работает».

Если вам нужна не вся теория, а быстрая шпаргалка для инцидента — в конце статьи есть компактная схема: что смотреть в kubectl describe pod при Pending, CrashLoopBackOff, ImagePullBackOff, OOMKilled, FailedMount и других типовых состояниях. Можно сразу перейти к ней, сохранить и использовать как чек‑лист. А если хочется понять не только «куда смотреть», но и почему Kubernetes ведёт себя именно так — дальше разберём describe вместе по шагам.

Читать далее

Как развернуть Spring Boot в Kubernetes за полчаса: туториал

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели9.4K

Хотите увидеть, как живое Spring Boot‑приложение проходит путь от репозитория до кластера Kubernetes? В статье пройдем путь от создания простого HealthController до автоматического деплоя через CI/CD. Разберём Dockerfile без магии, манифесты Deployment с пробами, настройку ресурсов и изящный Graceful Shutdown. В финале вы получите живую связку «код — контейнер — кластер», готовую к продакшену.

Читать далее

Kubernetes: архитектура и абстракции — полный гайд

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели10K

Почему Kubernetes стал стандартом оркестрации контейнеров? Разбираем архитектуру без скучной теории: Control Plane, поды, сервисы, деплойменты — на реальных примерах. Вы узнаете, как избежать типичных ошибок, увидите опыт миграции Tinder и получите лучшие практики, которые применяют ведущие команды. Статья для тех, кто хочет не просто знать команды kubectl, а понимать, как проектировать отказоустойчивые платформы

Читать далее

Как мы поймали drift в Kubernetes и зачем после этого перешли на GitOps

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели8.7K

История инцидента в продакшене: после планового релиза новая версия сервиса не поднялась, а откат на предыдущую версию тоже не помог. Причина оказалась не в коде, а в расхождении между тем, что было описано в Git, и тем, что реально жило в Kubernetes. Ручная правка ConfigMap несколько месяцев существовала только в кластере, пока очередной релиз не пересоздал поды и не вытащил проблему наружу. Разбираю, как мы нашли причину, почему Git не был настоящим источником правды и зачем после этого перешли на GitOps с Argo CD.

Читать далее

От Flux CLI к Flux Operator и Status Page

Уровень сложностиСредний
Время на прочтение16 мин
Охват и читатели8.4K

Flux CD — это набор инструментов для GitOps в Kubernetes. Он следит за Git-репозиторием и автоматически приводит состояние кластера в соответствие с описанными в нём манифестами и Helm-чартами. Flux работает как контроллер внутри кластера: подтягивает изменения из Git, применяет их через Kubernetes API и отслеживает статус каждого ресурса. Проект является graduated-проектом CNCF.

Когда вы впервые поднимаете GitOps в Kubernetes, Flux CD кажется достаточным: flux bootstrap, манифесты в Git, контроллеры тянут состояние кластера.

Но лучше перейти на Flux Operator:

Читать далее

Гайды по nxs-universal-chart v3.0: AI Inference контур на основе KServe

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели8K

Итак, вы обучили модель и она показывает ожидаемые результаты. Теперь осталось выкатить её на контур, однако для этого необходим ряд компонентов: нужна маршрутизация трафика, непосредственно инференс. Желателен autoscaling модели, передача чувствительных данных, например креды до хранилища моделей. Ну и мониторинг не помешал бы.

Каждый компонент - это отдельный Helm-чарт, отдельные CRD и отдельная документация. В итоге, вместо быстрого тестирования модели и гипотез, приходится заниматься YAML-инжинирингом и громко ругаться благим матом.

Всем привет, на связи Пётр, инженер компании Nixys. В этой статье я покажу, как собрать полноценный inference-контур из пяти Kubernetes-операторов в одном values.yaml размером в 120 строк, используя nxs-universal-chart.

Читать далее

Долгие миграции на старте сервиса — это не startup-проблема. Это ошибка в архитектуре релиза

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели9.9K

Когда сервис поднимается по 8-15 минут, команда почти всегда начинает крутить одни и те же ручки: увеличивает initialDelaySeconds, добавляет startupProbe, поднимает progressDeadlineSeconds, иногда переносит миграцию в initContainer и считает, что стало «по-кубернетесному». Обычно это не лечение. Это способ аккуратнее завернуть проблему в YAML. Если тяжёлая миграция живёт внутри старта приложения, вы связали жизненный цикл Pod, rollout Deployment и поведение базы в один общий узел. А такие узлы в проде рвутся не там, где их ждут.

Читать далее

От Kubernetes до AI Engineering: 5 главных трендов Технологического радара DevOpsConf 2026

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели6.8K

Представьте типичный разговор на ретроспективе: команда обсуждает, стоит ли переходить с Ansible на Terraform, нужен ли Backstage или хватит самописного портала, пора ли внедрять Chaos Engineering или это ещё «не для нас». Каждый приводит аргументы, ссылается на прочитанные статьи, и в итоге решение принимается по принципу «кто громче убедил». Знакомо?

Проблема чаще всего в отсутствии общего ориентира. Именно для этого существует технологический радар: инструмент, который переводит разговор о технологиях с уровня личных предпочтений на уровень коллективной экспертизы.

Читать далее

Разработка под Kubernetes: локально всё работает, в проде — нет. Кейс с Tetragon и eBPF

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели11K

Локально всё работает идеально: политики ловят нарушения, логи пишутся, система стабильна.

В проде Kubernetes‑кластера — теряются события, появляются дубли, а дедупликация ломается от одного скрипта.

Разбираю реальные проблемы, с которыми мы столкнулись при интеграции Tetragon и eBPF в реальный ИБ продукт, и почему Kubernetes ломает наивные предположения.

Читать далее

Как развернуть приложение в кластере Managed Kubernetes на выделенном сервере

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели10K

Всем привет! С Вами на связи Евгений Листраткин, ведущий инженер команды администрирования клиентских сервисов. Мы предоставляем услуги DevOps as a Service как в дата-центрах Selectel, так и на любых других площадках.

Под задачи клиентов мы держим значительную часть сервисов в Kubernetes-кластерах, используя managed‑решения нашей компании. При этом не участвуем в разработке и технической поддержке самого продукта, а выступаем исключительно в роли его пользователей — как внутренних, так и внешних.

Сегодня расскажу и на практических примерах покажу, как работать с группами нод на выделенных серверах. Создание кластера, его настройка, публикация приложений — все занимает не больше часа.

Читать далее →

Ближайшие события

От MinIO к SeaweedFS: опыт замены S3-хранилища

Время на прочтение4 мин
Охват и читатели8.7K

Есть такой опасный момент в инфраструктуре: когда все вроде бы работает, но трогать это лишний раз не хочется. Не потому что идеально. А потому что есть ощущение — если полезешь, станет хуже. В какой-то момент мы поймали себя на этом с MinIO.

Читать далее

Обзор релиза Kubernetes 1.36: перестаём пересобирать образы, чистим «зомби» PVC и читаем логи без SSH. Разбор 68 фич

Уровень сложностиСредний
Время на прочтение35 мин
Охват и читатели10K

Вышел Kubernetes 1.36 — релиз, который наконец-то закрывает старые боли админов и разработчиков. Больше не нужно пересобирать образы ради одного сигнала остановки: его теперь можно прописать прямо в манифесте. А «зомби-томы», которые висят мёртвым грузом и жрут место, стало легко находить по дате последнего использования. Собрали в статье разбор всех 68 изменений на русском языке.

Читать далее

Как из факапа родился продукт: история EasyDoc

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели6.4K

Привет, Хабр! Меня зовут Вадим Петросян, я директор по развитию бизнеса в ITFB Group. Почти десять лет я занимаюсь тем, что мы теперь называем Intelligent Document Processing (IDP). А началось всё с досадной подставы в договоре, которая влекла за собой большие расходы, но вместо этого подарила рынку одного из игроков в сфере OCR/IDP. Сегодня EasyDoc — это платформа №1 по версии CNews, работающая в крупнейших банках, пенсионных фондах и госорганах. А тогда, в 2016 году, мы просто не захотели платить 50% прибыли вендору за его движок. И решили сделать свой.

Читать кейс

Как организовать балансировку нагрузки Backend приложений Java Spring Cloud + Kubernetes

Время на прочтение5 мин
Охват и читатели9.4K

Привет, Хабр! Я Юрий Дергач, я возглавляю ЦК DevOps и релизного управления в РСХБ. Мы с командой развиваем инфраструктуру и автоматизируем разработку продуктов компании. При внедрении наших проектов группы «Экосистема Свое», основанных на стеке Java Spring, в Kubernetes, возникли вопросы, связанные с различными методами балансировки нагрузки между микросервисами.

В этой статье мы обсудим два основных подхода к балансировке нагрузки между Backend-компонентами приложений на стеке Java Spring Cloud в Kubernetes. Мы также рассмотрим преимущества и недостатки каждого метода.

Читать далее

108 окон: как команда без разработчиков и бюджета построила Интерактивный дом-таймлайн про ТВ 90-х

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели7.6K

Мы сделали интерактивный дом-таймлайн про телевидение 90-х и 00-х. Под катом: как команда без разработчиков дошла от JSON-файла на VPS за до корпоративного Kubernetes

Читать

nxs-universal-chart v3.0: новое поколение универсального Helm-чарта

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели8.2K

Релиз nxs-universal-chart 2.8.3 был более двух лет назад и за это время многое поменялось: Ingress Nginx ушел на покой, GitOps по факту стал стандартом управления инфраструктурой, а AI все сильнее входит в наши жизни. Все эти изменения не могли пройти мимо и заставили нас задуматься о том, как адаптировать наши подход и технологии DevOps к вызовам нового времени.

Результатом этих размышлений стал релиз новой версия nxs-universal-chart v3.x: из универсального набора встроенных шаблонов мы постарались превратить его в модульную платформу для поставки приложений в Kubernetes с упором на надежность и современные практики CI/CD процессов.

Всем привет, на связи Пётр, инженер компании Nixys и по совместительству maintainer проекта nxs-universal-chart. В этой статье я расскажу как мы переработали изначальную идею и какие нововведения в чарте это за собой повлекло.

Читать далее

От iptables к nftables: O(n) против O(1) на практике

Уровень сложностиСредний
Время на прочтение22 мин
Охват и читатели11K

Если администрировать Linux-сервера достаточно долго, рано или поздно сталкиваешься с сетевой фильтрацией. Где-то нужно закрыть лишние порты, где-то ограничить доступ между сегментами сети, а где-то настроить NAT.

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

В этой статье разберёмся, как появился nftables, чем он отличается от привычного iptables, как устроена его архитектура и как на практике использовать его для настройки firewall на Linux-сервере.

Читать далее
1
23 ...