Видно, какой pod болен, и почему
K8s AI Diagnostic Hub следит за Kubernetes-кластером в реальном времени. Он читает состояние pod'ов, события и логи, выносит вердикт Healthy, Warning или Critical и объясняет причину простыми словами. Рядом рисует карту: какие сервисы друг к другу обращаются и где ломается связь.
Демо работает на вымышленных данных, подключать кластер не нужно.
Что умеет AI
Вердикт строят правила и состояние Kubernetes, а обучаемая модель даёт второй, независимый сигнал. Если они расходятся, Hub показывает это явно.
Вердикт и причина для каждого pod'а
Каждый pod получает статус Healthy, Warning или Critical и одну строку с причиной: OOMKilled, CrashLoopBackOff, ImagePullBackOff, не проходит readiness probe, нет места на узле. Pod'ы с проблемами идут первыми, namespace с Critical и Warning подсвечены в списке.
Закрытые события не поднимают тревогу: если Secret появился и контейнер запустился, Hub помечает событие как Recovered, а pod остаётся зелёным.
Логи и доказательства ошибки
Hub показывает строку лога, по которой вынесен вердикт, и время ошибки. Ниже полный просмотр: до 10 000 строк на контейнер, период от 5 минут до 7 дней, логи предыдущего экземпляра до перезапуска, фильтр, режим «только ошибки», скачивание и копирование.
Пароли и токены в логах маскируются: вместо значения видно password=***.
Диалог с AI
Кнопка «Ask AI» открывает чат прямо в Hub. Спросите «Что сломалось?», «Почему упал payments-api?», а затем «Что делать?»: ответ собирается из диагноза, событий и логов этого pod'а и заканчивается конкретными шагами и командами kubectl.
Чат помнит, о каком pod'е идёт речь, понимает русский и английский и умеет показать ошибку из логов, события, перезапуски и сигнал модели. Он работает по правилам на сервере Hub, поэтому данные кластера никуда не уходят.
- Модель учится на ваших ответах
- Небольшая нейросеть на numpy обучается на истории диагнозов. В карточке pod'а вы отмечаете правильный вердикт, и он идёт в обучение. Кнопка Train AI запускает дообучение и показывает точность на отложенной выборке.
- Цепочка от Service до контейнера
- Для каждого pod'а строится схема Service → Deployment → ReplicaSet → Pod → Container → ConfigMap. Сломанное звено выделено красным пунктиром.
- Несколько кластеров
- Кластер добавляется прямо в браузере: имя и файл kubeconfig. Переключатель в шапке меняет кластер без перезапуска, добавленные кластеры сохраняются после перезапуска.
- Быстро на больших кластерах
- Дашборд выдерживает сотни pod'ов: список подгружается по 100, повторные запросы объединяются, прогнозы модели кэшируются. Обновление идёт каждые 15 секунд или по кнопке Refresh.
Карта запросов между сервисами
Выберите сервис, и Hub покажет, к кому он обращается и кто обращается к нему. Связи собираются из переменных окружения, ConfigMap и, по желанию, из логов: по DNS-имени или по IP, с портом.
- Красный пунктир. В логах есть ошибки соединения: сервис не может достучаться до зависимости.
- Оценка влияния. Если сервис Critical, Hub пишет, что из-за него может сломаться выше по цепочке.
- Глубина и направление. Можно смотреть 1–3 шага и только исходящие, только входящие или оба направления.
Как проходит диагностика
- 1Сканирование. Hub читает pods, events, services и configmaps кластера и держит свежий снимок.
- 2Правила. Состояние контейнеров, перезапуски и события дают вердикт и причину. Логи подтверждают или уточняют её.
- 3Сигнал модели. Нейросеть независимо оценивает тот же pod. Расхождение с правилами помечено предупреждением.
- 4Ваш ответ. В окне диагностики pod'а, в блоке AI model signal, справа три кнопки: Healthy, Warning, Critical. Нажмите верную, затем «Train AI» в шапке: модель дообучится на вашей метке.
Безопасность
- Только чтение
- Hub читает pods, events, logs, services и configmaps и ничего не меняет в кластере. Лучше выдать ему kubeconfig ServiceAccount с read-only правами. Значения Secret не читаются.
- Kubeconfig проверяется
- Файл хранится на сервере с правами 600. Загрузка отклоняет exec и cloud-плагины, ссылки на локальные файлы, proxy-url и незащищённые http-адреса.
- Защита веб-интерфейса
- Вход по паролю с ограничением попыток, CSRF-токены, строгий Content-Security-Policy, выход только через POST.
- Запуск в Docker
- Hub работает как контейнер (Flask и gunicorn) с одним томом данных. Конфигурация задаётся переменными окружения, пароль не хранится в образе.
Установка в Docker
Образ Hub скачивается прямо с этого сайта. Реестр контейнеров и доступ в интернет на сервере не нужны: образ загружается командой docker load. Понадобится Docker Engine (Linux) или Docker Desktop (Windows, macOS).
- Скачайте образ и SHA256SUMS в одну папку.
- Проверьте контрольную сумму.
Команда должна ответить OK. В Windows сравните вывод
Get-FileHashсо строкой в SHA256SUMS.# Linux sha256sum -c SHA256SUMS # macOS shasum -a 256 -c SHA256SUMS # Windows PowerShell Get-FileHash .\k8s-ai-diagnostic-hub-latest.tar.gz -Algorithm SHA256
- Загрузите образ в Docker.
docker load -i k8s-ai-diagnostic-hub-latest.tar.gz
- Запустите контейнер. Замените пароль на свой, длинный и случайный.
docker run -d --name k8s-ai-diagnostic-hub --restart unless-stopped -p 8080:8080 -v hub-data:/mnt/data -e APP_USER=admin -e APP_PASSWORD='ваш-пароль' k8s-ai-diagnostic-hub:latest
Команда одинаково работает в bash и PowerShell. Либо запустите через Compose:
docker compose up -dрядом с docker-compose.yml и .env. - Откройте
http://localhost:8080и войдите под APP_USER и APP_PASSWORD. Добавьте кластер: загрузите kubeconfig в интерфейсе.
- Данные сохраняются
- Кластеры, kubeconfig, модель и датасет лежат в томе
hub-dataи переживают обновление и перезапуск контейнера. - Обновление
- Скачайте новый образ, выполните
docker load, затемdocker rm -f k8s-ai-diagnostic-hubи повторите команду запуска. Том с данными остаётся. - HTTPS
- Поставьте перед контейнером reverse proxy (nginx или Caddy) с сертификатом и добавьте в запуск
-e COOKIE_SECURE=true. - Доступ к кластеру
- Hub только читает данные кластера. Выдайте ему kubeconfig ServiceAccount с правами на чтение.
Посмотрите, как это выглядит изнутри
Демо открывается в новой вкладке и повторяет интерфейс Hub: дашборд, диагностика pod'а, логи, карта связей, переключение кластеров и Train AI.