惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

F
Full Disclosure
Recorded Future
Recorded Future
T
Tenable Blog
S
Securelist
C
CERT Recently Published Vulnerability Notes
T
Threatpost
S
Schneier on Security
A
Arctic Wolf
The Hacker News
The Hacker News
C
CXSECURITY Database RSS Feed - CXSecurity.com
Know Your Adversary
Know Your Adversary
P
Privacy International News Feed
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
The Register - Security
The Register - Security
Cisco Talos Blog
Cisco Talos Blog
AWS News Blog
AWS News Blog
K
Kaspersky official blog
T
True Tiger Recordings
T
Threat Research - Cisco Blogs
V
Vulnerabilities – Threatpost
P
Palo Alto Networks Blog
T
The Exploit Database - CXSecurity.com
小众软件
小众软件
B
Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Microsoft Azure Blog
Microsoft Azure Blog
Cyberwarzone
Cyberwarzone
C
Cybersecurity and Infrastructure Security Agency CISA
T
Tor Project blog
Spread Privacy
Spread Privacy
Malwarebytes
Malwarebytes
P
Proofpoint News Feed
F
Fox-IT International blog
F
Fortinet All Blogs
P
Privacy & Cybersecurity Law Blog
G
GRAHAM CLULEY
量子位
Latest news
Latest news
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 叶小钗
Project Zero
Project Zero
T
Tailwind CSS Blog
N
Netflix TechBlog - Medium
Martin Fowler
Martin Fowler
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
I
Intezer
博客园_首页
腾讯CDC
H
Hackread – Cybersecurity News, Data Breaches, AI and More
D
Darknet – Hacking Tools, Hacker News & Cyber Security

Все публикации подряд на Хабре

Где в IT джуны получают больше всего и куда пойти учиться Healthchecks в Docker Compose для Laravel: как сделать так, чтобы сервисы запускались в правильном порядке Биокомпьютер из живых нейронов: что на самом деле построила FinalSpark Знания без практики — мертвы | Разница между «декларативной» и «процедурной» памятью у LLM Поднимаем Llama 3 в облаке: Ollama и Open WebUI SAST прямо в IDE: как Veai ищет уязвимости в Java/Kotlin-проекте и помогает их исправлять Почему мы до сих пор пользуемся Markdown? Архитектура безопасности во frontend-приложениях: Server Actions и защита данных в эпоху Next.js Антипаттерны Zabbix в крупной инфраструктуре: каталог базовых граблей Мёд, крабы и чипы ИИ фото и нейросети для создания картинок в 2026: ТОП-6 моделей для генерации реалистичной фотосессии с ИИ Горячо-холодно: как определить температуру бизнеса с помощью тепловой карты BPMSoft «Насколько вы контролируете то, из чего состоит ваш продукт?». Как и зачем проводить Open Source Analysis Дезагрегированный инференс LLM в Kubernetes: префилл, декодирование и планирование подов Как стать Go-разработчиком с нуля? Бесплатная программа обучения Разработка эмулятора NES на отечественном микроконтроллере К1921ВГ1Т predict_proba выдаёт 0.9 — но это не вероятность 90% OneClickRelease, или как мы ставим релизы одной кнопкой Ускорение INSERT/COPY в логической репликации PostgreSQL Полиморфные ссылки в PostgreSQL: три попытки помочь оптимизатору Ransomware: математический аппарат на службе зла Блеск и нищета SMM hh.ru Пишем универсальную глитч-машину Как не похоронить бизнес на старте: анатомия корпоративных конфликтов при учреждении ООО Как стиль общения может создавать карьерный тупик в ИТ Ответы с «деврел‑супервизии», вопрос восьмой: как держать веру команды и ЛПР, когда метрики шатаются Новинка: Прикладные API для искусственного интеллекта и Data Science Миграция с ingress-nginx: выбор нового контроллера Как мы «взломали» MasterSCADA4D: выкинули стандартные блоки и заставили SCADA работать на SVG Ожидание: сделать ИИ-примерочную обоев за 2 дня. Реальность: пришлось добучать свою модель на SD Как мы тестируем в Профи.ру: почему у нас нет пирамиды, зато есть ромб и матрица Об Open-source — спасителе человечества и kernel-сообществе пророке его… ТОП-10 сайтов мебельных магазинов: лучшие UX-решения и приемы юзабилити QSEAL: новый подход в резервном копировании средствами СХД Книга: «Windows Server 2022. Полное руководство по администрированию» Нейросети для работы с Excel: Выбираем ИИ для создания таблиц и написания формул Совместимость Test IT и RedOS: опыт автоматизации сборки, тестирования и сертификации RAG-Anything: Как собрать по-настоящему мультимодальный RAG Как я готовился к Certified Kubernetes Security Specialist (CKS) в 2026 году Я держал кафе 16 лет и кормил полгорода. Потом пришли зумеры и всё посыпалось Есть ли жизнь на фазе: откуда берёт энергию умный выключатель без подключённой нейтрали Go Computer. История удивительного планшета из 1992 года с графическим интерфейсом Экономия GPU-часов в 2,5 раза, уход ИИ в бэкенд и новые стандарты агентских систем: ML-дайджест Что скрывается за AI-стратегией SAP, Oracle и Palantir: зачем корпоративному ИИ семантическое ядро Почему RAG — фундамент любой AI-трансформации Персонализация как баг Одна на 9 команд: как я внедряла квартальное планирование в трайбе, который сопротивлялся переменам После ИИ писать код руками ощущается уже не как норма Языковые модели без машинного обучения Обмен через интернет между мобильными приложениями ТСД и 1С От плановых ремонтов к предиктивному обслуживанию: дорожная карта для главного инженера Параллельный импорт техники закрыли или нет? Юридический разбор Резервное электрообеспечение для ЦОДов: патенты в мире и в России 256 зелёных тестов на нерабочем коде. Так выглядит «услужливый клерк» внутри нейросети Бизнес-аналитика для сети из 300 аптек: прогноз продаж и другие показатели Impact Analysis в дизайн-системе: как мы сделали CI осмысленнее, а review понятнее Топ-5 лучших нейросетей 2026 года: полный список на любой случай в SpeShu.AI Что делает сотрудников по-настоящему эффективными: процессы, знания или технологии Как за один вечер я написал сервис инвентаризации оргтехники для филиальной сети из 16 локаций Склад нанимает — и не может остановиться. Дефицит складских работников в 2026 году: причины и решения Шёл за утечкой памяти, нашёл утечку диска: SXSSFWorkbook без dispose() в Apache POI Штраф в размере 155 000 рублей получил владелец сайта по заявлению Роскомнадзора Индивидуальный план развития: от формальной процедуры к инструменту управления экспертизой команды Как понять, что вы не управляете финансами, а просто смотрите на цифры Водоросли и микропластик Масштабирование LLM: от одного чипа до ЦОДа. Глава 3. Траснформеры Бомба замедленного действия взорвалась: эпоха ИИ «бери сколько унесёшь» закончилась Стимпанк как часть жизни. История паровых двигателей и место, которое они занимали в мире в XIX-XX веках. Часть 2 288-ядерный Xeon 6+ и другие серверные CPU От OCR к смыслу: как мы научили модель понимать, кто кому отец, мать, жених и свидетель Насколько плох был Intel iAPX 432 — проверяем на практике Приручаем железо: внедряем DevOps в промышленной разработке Когда Reality не хватает: добавляем Hysteria2 + Salamander в iOS-мессенджер, и как всегда грабли по дороге (ч.2) Разработчики не экстрасенсы: как мы перестали приносить туман вместо ТЗ Дайджест C++: новости, полезные материалы и “свой язык” на десерт Ещё один репозиторий моделей для Archi 10 простых шагов, чтобы создать позиционирование для продукта Загадочная поэма древнего Китая, работающая как компьютер CLOUD Act, GDPR и ваш DNS: что на самом деле может ваш провайдер Ускоряем и оптимизируем numpy, pandas, scipy и sklearn Idempotency keys: 5 граблей, которые мы поймали на проде Gamedev. Парсинг данных из Google Sheets и Excel в json без привлечения программистов Nano Banana Google AI: как использовать Нано Банана для генерации и редактирования изображений Два игрока на весь российский рынок ИИ: что показал ЦИПР-2026 Менеджер ресурсов ЯНДЕКС 360 (YANDEX 360) промокоды июнь 2026: промокод Yandex 360 скидка 40% на годовые тарифы Open-Source инструмент для автоматического перевода книг Ищу ранних тестировщиков для Android-версии agent harnesses Не используйте LLM для текста Увеличиваем продажи без слез аналитика Оптимизация запросов к PostgreSQL: 5 неочевидных настроек для продакшена 45 лет тюрьмы за DROP TABLE и переход Карпатого в Anthropic Планирование движения для ровера на ходовой Ackerman'а Революция в изучении языков Java — быстрая. Ваш код может таким не быть Как я опоздал на конкурс OpenAi с новой архитектурой нейросети Быстрые интеграции в 1С: прощайте, бесконечные переделки Как получить субсидию 300 миллионов от Минпромторга? preIPO Anthropic, OpenAI, SpaceX. Разбираемся — стоит ли участвовать? Entaxy ION + OPC UA: два способа получить данные с промышленного оборудования
Torque — ваши сверхспособности для отладки k8s
antonkrylov · 2026-05-27 · via Все публикации подряд на Хабре

Время на прочтение4 мин

Охват и читатели2.5K

Kubernetes ближе к Linux: много компонентов, контроллеров, CRD, операторов и внешних проектов собираются в живую экосистему. Сила там в открытом расширении и конкуренции подходов. Torque я пытаюсь делать ближе к FreeBSD и SQLite: меньше россыпи деталей наружу, больше «батарейки включены», единая система с документацией, доказательствами, логами и объяснениями внутри. Но начинался проект с инстурмента для дебега поэтому давайте рассмотрим как использовать Torque для отладки в k8s.

Torque может одной командой собрать и развернуть весь проект

Torque может одной командой собрать и развернуть весь проект

Для примера будем использовать Grafana, Fluent Bit, Loki canary и маленький вспомогательный chart с двумя репликами и двумя контейнерами, которые печатают JSON-логи. Такой набор удобен для отладки: есть нормальный веб-сервис, daemonset-сборщик, намеренно сломанная связь с Loki и структурированные ошибки приложения.

Я специально оставил в сценарии несколько неприятных условий: неприкрепленные digest-образы, отсутствующий Loki service, ранний readiness race у Grafana и шумный daemonset, читающий node logs. Поэтому статья показывает не идеальный happy path, а нормальную инженерную работу: найти риск до apply, увидеть план, затем доказать причину по логам.

Сначала verifier

Отладка начинается до мутации кластера. verifier рендерит chart теми же values, которыми потом будет пользоваться релиз, и проверяет Kubernetes-политику: securityContext, автомонтирование service account token, probes, ресурсы, RBAC и другие рискованные места. В этом прогоне отчеты были записаны для всех четырех чартов, а HTML-версии сохранены для Grafana и Fluent Bit. Это важно: когда релиз ломается, оператор видит не абстрактное “Helm failed”, а точный список допущений, с которыми chart пошел в кластер.

verifier --chart ./grafana --release wr-grafana -n torque-debug \
  --values values/grafana-debug.yaml \
  --mode warn --fail-on critical \
  --format json --report reports/verifier-grafana.json
Torque plan и verifier может найти баг задолго до релиза

Torque plan и verifier может найти баг задолго до релиза

Потом Helmer-style план

Следующий слой - план. В текущей ветке Torque интерактивный Helmer-style отчет делается через torque apply plan --visualize. Он показывает, какие объекты будут созданы или обновлены, какие манифесты получились после values, и какие verifier-отчеты прикреплены к плану. Для отладки это полезнее, чем смотреть только live pods: план отвечает, почему Kubernetes вообще получил такой Deployment, DaemonSet, ServiceAccount или Service. В моем запуске были созданы HTML-планы для Grafana, Fluent Bit, Loki canary и JSON log lab.

torque apply plan --chart ./fluent-bit --release wr-fluent -n torque-debug \
  --values values/fluent-bit-debug.yaml \
  --verify-report reports/verifier-fluent-bit.json \
  --visualize --format html --output reports/helmer-fluent-bit-plan.html
Пример плана

Пример плана

Apply с доказательствами

После проверки и плана я сделал apply для релиза через torque apply с --predict, --proof-bundle и --capture. Grafana поднялась за 21 секунду, Fluent Bit - примерно за 3 секунды, Loki canary был применен без ожидания готовности downstream Loki, а JSON log lab поднял две реплики. Torque заранее отметил риск из-за image references без digest pinning и сохранил apply-сессии в SQLite. Это дает точку возврата: если дальше логи покажут проблему, ее можно связать с конкретной версией chart, values, планом и фактическим apply.

torque apply --chart ./grafana --release wr-grafana -n torque-debug \
  --values values/grafana-debug.yaml \
  --predict \
  --proof-bundle=reports/grafana-apply-proof.json \
  --capture=captures/grafana-apply.sqlite \
  --timeout 4m --yes

Пять сложных случаев логирования

Главная часть лабы - torque logs. Я собрал пять реальных кейсов. Первый: Grafana по label selector с --events и highlight, где Kubernetes-события показали ранний readiness failure, хотя deployment позже стал healthy. Второй: Fluent Bit DaemonSet, где логи плагина показали wr-fluent-loki:3100 DNS lookup failure и mem buffer pause. Третий: Loki canary, который печатал сообщения и одновременно показывал ошибку URL для tail/query к отсутствующему Loki. Четвертый: deploy/wr-grafana с --deploy-mode stable+canary, где Torque сам выбрал ReplicaSet по Deployment. Пятый: JSON workload с --filter level=error, где из двух pod и двух контейнеров остались только ошибки API 502 и worker dead-letter события.

torque logs -n torque-debug \
  -l app.kubernetes.io/instance=wr-json \
  --diff-container --filter level=error \
  --highlight '"level":"error"|timeout|dead letter|502' \
  --capture=captures/05-json-filter-errors.sqlite \
  --tail 120 --timezone UTC

Почему capture важнее копипаста

Каждый log case был сохранен в SQLite через --capture, а потом разобран командой torque explain. Это меняет стиль отладки. Вместо того чтобы вставлять в чат 300 строк терминала, можно передать файл и короткое объяснение: primary cause, failure hints, affected pod/container и команду для повторного анализа. Для Grafana explain выделил readiness probe connection refused. Для Fluent Bit - ошибку отправки batch в несуществующий Loki service. Для JSON log lab - конкретные строки с level=error, статусом 502, trace id и dead-letter очередью.

torque explain

torque explain

Практический порядок

Рабочий порядок получается простым. Сначала запускайте verifier и сохраняйте JSON/HTML, чтобы политика была видна до apply. Затем делайте Helmer-style план через torque apply plan --visualize и прикрепляйте verifier report, чтобы diff, ресурсы и риски были в одном HTML. Потом применяйте chart через torque apply --predict --proof-bundle --capture. Когда начинается отладка, используйте torque logs не как замену kubectl logs, а как контекстный инструмент: selector, events, deployment lens, JSON filter, highlight, timezone и capture. В конце всегда прогоняйте torque explain по SQLite-файлу. Тогда отладка Helm-релиза становится не воспоминанием оператора, а проверяемым артефактом.

PS. Torque умеет работать с MCP. Разработчик на Mac OSX может работать с удаленным сервером Linux на котором установлен Torque как сервис и закручены "гайки".

MCP

MCP