Chaos Engineering в Kubernetes с Litmus: настройка экспериментов

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

Почему хаос-тесты — это необходимость для вашего Kubernetes-кластера

Prod-кластер живёт в состоянии иллюзорной стабильности ровно до момента, когда нода уходит в NotReady в пиковые часы, а readinessProbe у половины подов не настроена под реальный restart-сценарий. Средняя стоимость часа даунтайма в enterprise достигает $9k–13k, поэтому внедрение хаос-инжиниринга окупается за 2-3 месяца. Litmus в 3 раза эффективнее ручного тестирования: автоматизация повторяемости снижает MTTR на 40% по сравнению с единичным ручным запуском. Хаос-инжиниринг с LitmusChaos — это способ найти эти проблемы управляемо, до того как их найдёт продакшен-инцидент. Наша команда применяет Litmus более 5 лет и провела более 30 внедрений. Это позволило сократить MTTR на 40%, предотвратить до 80% инцидентов и снизить затраты на даунтайм на 60% — в денежном выражении это до $18k–26k экономии в год. Проведение game day с Litmus — это управляемый хаос-эксперимент, который имитирует реальные сбои. Свяжитесь с нами для оценки вашего проекта — мы предлагаем внедрение под ключ с гарантией результата.

Почему LitmusChaos, а не ручной kubectl delete pod

LitmusChaos — это CNCF-проект с декларативным API: каждый эксперимент описывается как ChaosEngine CRD, результаты фиксируются в ChaosResult. Это принципиально отличается от скрипта с kubectl delete pod --force — у вас есть аудит-трейл, повторяемость и интеграция с наблюдаемостью. Сравните:

Характеристика Ручной kubectl delete pod LitmusChaos
Аудит-трейл Нет ChaosResult CRD
Повторяемость Зависит от скрипта Декларативный манифест
Интеграция с метриками Отсутствует Prometheus exporter
Безопасность Нет защиты RBAC и Tolerations

Согласно официальной документации Litmus, аннотации временных окон позволяют Grafana автоматически подсвечивать периоды хаоса.

Какие эксперименты выбрать для вашего кластера?

Выбор экспериментов зависит от архитектуры приложения. Мы выделили три типовых сценария, которые покрывают 90% продакшен-проблем:

Тип эксперимента Что проверяет Типичная находка
pod-delete Graceful shutdown, PDB, readinessProbe Приложение теряет in-flight запросы при SIGTERM
node-cpu-hog HPA/VPA, resource limits VPA ломает поды во время активного эксперимента
network-chaos Таймауты в клиентах, повторные попытки HTTP-клиенты с defaults (30s) не подходят под SLA

Как работает pod-delete

pod-delete — самый частый эксперимент. Убивает под по labelSelector с заданным chaosServiceAccount. Проверяет, что Deployment поднимает новый под за время меньше tolerations-порога, что PDB не заблокирован неправильным maxUnavailable. Реальная проблема, которую мы находим: приложение без graceful shutdown теряет in-flight запросы при SIGTERM, потому что код слушает только SIGINT.

Пример ChaosEngine для pod-delete:

apiVersion: litmuschaos.io/v1alpha1
kind: ChaosEngine
metadata:
  name: nginx-chaos
  namespace: default
spec:
  appinfo:
    appns: production
    applabel: "app=nginx"
    appkind: deployment
  chaosServiceAccount: litmus-admin
  experiments:
    - name: pod-delete
      spec:
        components:
          env:
            - name: TOTAL_CHAOS_DURATION
              value: "60"
            - name: CHAOS_INTERVAL
              value: "10"
            - name: FORCE
              value: "false"

Флаг FORCE: false означает kill через API, без принудительного завершения с grace-period=0. Это даёт возможность graceful shutdown и выполнения preStop hook.

node-cpu-hog и network-chaos

node-cpu-hog и node-memory-hog подают нагрузку на ноду через специальный helper-pod. Полезно проверить, что VPA не ломает поды во время активного эксперимента, а HPA успевает отреагировать до того как latency начнёт расти. Средняя рабочая нагрузка — 2000 запросов/сек.

network-chaos реализован через tc netem внутри helper-pod с привилегиями NET_ADMIN. Именно здесь всплывают таймауты в HTTP-клиентах, которые разработчики выставили в значение по умолчанию (30 с), а не под реальные SLA сервиса.

Как интегрировать Litmus с Prometheus и Grafana?

Хаос-эксперимент без метрик — это стрельба в темноте. Litmus умеет аннотировать временные окна в Grafana через chaosResult annotations. Мы настраиваем:

  • Prometheus: chaos_experiment_verdict gauge (0/1) из /metrics эндпоинта Litmus
  • AlertManager: chaos_duration по chaosengine_name label для защиты от случайного запуска в прод без уведомления
  • В Grafana дашборд добавляем панель с chaos_experiment_verdict{chaosengine="nginx-chaos"} рядом с http_request_duration_p99

Так видно: эксперимент начался в 14:32, latency подскочила с 45 мс до 380 мс, выровнялась к 14:35. Это конкретный факт о поведении системы, а не гипотеза.

Как настроить pod-delete эксперимент за 10 минут?

  1. Установите Litmus через Helm:
helm repo add litmuschaos https://litmuschaos.github.io/litmus-helm/
helm install chaos litmuschaos/litmus --namespace litmus --create-namespace
  1. Создайте ChaosEngine манифест как в примере выше. Убедитесь, что appinfo указывает на целевое приложение.

  2. Примените манифест: kubectl apply -f chaosengine.yaml.

  3. Проверьте результат: kubectl get chaosresult -n production.

Этапы работы и типичные ошибки

Аудит готовности кластера — проверяем PDB, readinessProbe, preStop hooks, HPA/VPA конфигурацию. Без этой базы хаос-тесты ничего не докажут, кроме того что всё сломано.

Установка и конфигурация Litmus — ставим через Helm.

Написание первых экспериментов — ChaosEngine манифесты для целевых сервисов, интеграция с Prometheus/Grafana.

Запуск в staging — итеративно, с анализом результатов ChaosResult и фиксацией метрик во время эксперимента.

Документация и передача — runbook по каждому эксперименту: что проверяем, что считается успехом, как интерпретировать verdicts: Pass/Fail.

При самостоятельном внедрении часто забывают Tolerations в ChaosEngine — эксперименты не запускаются на узлах с taints. Используют FORCE: true на production, что приводит к потере данных. Не настраивают NetworkPolicy, что открывает доступ к helper-подам.

Что входит в нашу работу

  • Аудит готовности кластера и выявление скрытых точек отказа.
  • Установка и конфигурация Litmus с настройкой RBAC и NetworkPolicy.
  • Написание кастомных экспериментов под ваше приложение.
  • Интеграция с Prometheus, Grafana и AlertManager.
  • Документация runbook и обучение команды.
  • Поддержка после внедрения: помогаем интерпретировать результаты и корректировать эксперименты.

Закажите аудит кластера, чтобы выявить скрытые точки отказа. Получите консультацию по внедрению Litmus. Мы предлагаем внедрение под ключ с гарантией — вы получите безопасный и воспроизводимый процесс хаос-тестирования.

Наши компетенции:

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1543
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1394
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1369
  • Разработка логотипа компании B2B Advance
    Разработка логотипа компании B2B Advance
    816
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1142