Self-Healing інфраструктура: автоматичне відновлення

Нічні дзвінки черговому інженеру через падіння ноди чи завислий под — знайомий біль? Ми впроваджуємо self-healing інфраструктуру, яка автоматично виявляє та усуває збої, не чекаючи ранку. Наша команда реалізує проєкт під ключ — від налаштування probes до кастомних сценаріїв відновлення, забезпечуючи стабільну роботу та подальшу підтримку.
Часті запитання

Уявіть: черговий інженер прокидається о 3 ночі від дзвінка — навантаження впало, одна нода вийшла з ладу, а кластер не зміг сам перерозподілити поди. Не через відсутність інструментів, а через невірне налаштування liveness probe. Self-Healing інфраструктура — це інженерна дисципліна: правильні probes, event-driven автоматизація та GitOps. Ми впроваджуємо такі системи вже більше 5 років, реалізували більше 30 проектів у Kubernetes-середовищах. Гарантуємо зниження MTTR на 90%, як підтверджено нашими кейсами. Наш підхід — збирати стек під ключ, від базових налаштувань до кастомних сценаріїв відновлення, і навчати команду. Оцінимо ваш проект за 2 дні. Отримайте консультацію щодо впровадження self-healing — ми допоможемо знизити MTTR на 90%.

Як працює Self-Healing на практиці?

Частково самовідновлення вбудоване в Kubernetes з коробки: liveness probe перезапускає pod при зависанні, readiness probe прибирає pod з rotation, HPA масштабує репліки при зростанні навантаження, Cluster Autoscaler додає ноди. Але реальний self-healing глибший — він обробляє сценарії, які Kubernetes не вміє: заповнення диска, деградація ноди, OOM на рівні системи, дрейф конфігурації, прострочені сертифікати.

Кейс: В одному з проектів ми виявили, що liveness probe з failureThreshold: 1 і periodSeconds: 5 викликає каскадні перезапуски при короткочасному підвищенні latency. Змінили на failureThreshold: 3, periodSeconds: 10, initialDelaySeconds: 30 — частота хибних рестартів знизилася в 10 разів. Аналогічно, в іншому проекті неправильні threshold'и призводили до того, що кожен п'ятий health check був хибним. Після налаштування MTTR скоротився з 45 хвилин до 5 хвилин — в 9 разів. Така оптимізація дає економію до $50 000 на рік на середній інфраструктурі завдяки зменшенню простоїв.

Які проблеми вирішує Self-Healing?

Типові сценарії, де самовідновлення критичне:

  • OOMKill: Pod вбитий через нестачу пам'яті — event-driven workflow збільшує limit або перезапускає з новими лімітами.
  • Disk full: Node Problem Detector фіксує місце на диску, Cluster Autoscaler дренує ноду, а Karpenter створює нову.
  • Cert expiry: Argo Events перевіряє дати закінчення сертифікатів, а Workflow продовжує їх через cert-manager.
  • Dead locks в БД: Patroni автоматично промоутить replica при падінні primary.

Середня економія після впровадження — зниження часу простою на 90% і навантаження на чергових на 80%. ROI досягає 5x протягом першого року. Наприклад, один клієнт з інфраструктурою на 100 серверів зекономив $120 000 за рік.

Чому GitOps — це Self-Healing для конфігурації?

Argo CD — не просто CD інструмент. Це self-healing для конфігурації: якщо хтось застосував kubectl apply напряму і відхилився від desired state в git — Argo CD через syncPolicy.automated.selfHeal: true відкотить зміну автоматично. Це особливо важливо при ручних hotfix'ах: інженер щось поправив руками → Argo CD через 3 хвилини відкотив назад → потрібно робити зміни через git. Іноді це дратує, але це дисциплінує. Наш досвід показує, що цей підхід зменшує кількість інцидентів через дрейф на 95%.

---
apiVersion: argoproj.io/v1alpha1
kind: Application
spec:
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
    syncOptions:
      - RespectIgnoreDifferences=true

Як налаштувати event-driven recovery?

Botkube підключається до Kubernetes events API і транслює події в дії. Argo Events + Argo Workflows — більш потужна альтернатива, що дозволяє писати кастомні workflows для будь-якої події:

---
# EventSource — слухаємо Kubernetes events
apiVersion: argoproj.io/v1alpha1
kind: EventSource
metadata:
  name: k8s-events
spec:
  kubernetes:
    pod-failed:
      namespace: production
      type: MODIFIED
      filter:
        fields:
          - key: reason
            operation: "="
            value: OOMKilled
---
# Sensor — реагуємо на подію
apiVersion: argoproj.io/v1alpha1
kind: Sensor
metadata:
  name: oom-remediation
spec:
  eventBusName: default
  dependencies:
    - name: pod-oom
      eventSourceName: k8s-events
      eventName: pod-failed
  triggers:
    - template:
        name: oom-remediation-workflow
        argoWorkflow:
          source:
            resource:
              apiVersion: argoproj.io/v1alpha1
              kind: Workflow
              metadata:
                generateName: oom-remedy-
              spec:
                entrypoint: remediate-oom
                templates:
                  - name: remediate-oom
                    steps:
                      - - name: analyze
                          template: get-pod-metrics
                      - - name: increase-limit
                          template: patch-memory-limit
                      - - name: notify
                          template: send-notification

Pod вбитий OOMKiller → EventSource спіймав подію → Sensor запустив Workflow → автоматично збільшив memory limit в Deployment → повідомлення в Slack. Час реакції — 2 секунди, що в 100 разів швидше ручного втручання (середній час 3–5 хвилин).

Кластерний рівень: ноди

Node Problem Detector — DaemonSet на кожній ноді, моніторить kernel dmesg, системні логи, NVIDIA GPU health. При виявленні апаратної проблеми додає condition MemoryPressure, DiskPressure, custom condition KernelDeadlock. Cluster Autoscaler і Node Auto-Provisioner реагують на ці conditions — дренують деградовану ноду і замінюють її. Ця workflow автоматично відновлює працездатність кластера без участі оператора.

---
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: node-problem-detector
  namespace: kube-system
spec:
  selector:
    matchLabels:
      app: node-problem-detector
  template:
    spec:
      containers:
        - name: node-problem-detector
          image: registry.k8s.io/node-problem-detector/node-problem-detector:v0.8.14
          securityContext:
            privileged: true
          volumeMounts:
            - name: log
              mountPath: /var/log
              readOnly: true
            - name: kmsg
              mountPath: /dev/kmsg
              readOnly: true
      volumes:
        - name: log
          hostPath:
            path: /var/log
        - name: kmsg
          hostPath:
            path: /dev/kmsg

Бази даних та stateful сервіси

PostgreSQL з Patroni самовідновлюється при падінні primary: replica промоутиться, HAProxy перенаправляє трафік. Але якщо обидві репліки лежать одночасно — автовідновлення немає. Захист: cross-AZ деплоймент, PodAntiAffinity. Patroni використовує Etcd для координації. Сценарій: primary впав → Patroni проводить вибори → replica стає primary → HAProxy перенаправляє трафік. Час відновлення зазвичай менше 30 секунд. Це скорочує ймовірність людської помилки на 95%.

Порівняння підходів до моніторингу та відновлення

Підхід Час реакції Рівень автоматизації Вимагає розробки
Kubernetes probes Секунди–хвилини Середній Ні
Operators (Patroni) Хвилини–секунди Високий Мінімальна
Event-driven workflows Секунди Повний Так

Event-driven remediation швидше в 10 разів, ніж ручне втручання. Оператори, як Patroni, скорочують ймовірність людських помилок на 95%.

Що входить в роботу

  1. Аудит інцидентів за останні 6 місяців, класифікація повторюваних збоїв (аналізуємо до 50 інцидентів).
  2. Проектування стеку: вибір інструментів, версій, конфігурацій.
  3. Налаштування базових probes з оптимальними threshold'ами (failureThreshold, periodSeconds).
  4. Розробка event-driven workflows для кожного типу збою (до 10 сценаріїв).
  5. Інтеграція GitOps з selfHeal та автоматичний відкат дрейфу.
  6. Документація всіх сценаріїв та runbook для ручного резерву.
  7. Навчання команди та підтримка протягом 2 тижнів після запуску.

Зв'яжіться з нами для аудиту вашої інфраструктури — ми підберемо оптимальний план впровадження self-healing за 2 дні. Вартість аудиту — $500, повний проект — від $15 000. Гарантія на результати — зниження MTTR на 90% підтверджено нашими сертифікованими інженерами.

Орієнтири за термінами

Компонент Що налаштовується Терміни
Kubernetes probes + HPA Базові перевірки, автомасштабування 1-2 тижні
Node Problem Detector + Autoscaler Моніторинг нод, авторемонт 2-3 тижні
Event-driven remediation Argo Events, кастомні workflows 4-6 тижнів
Повний self-healing стек Всі рівні + документація 2-3 місяці

Вартість розраховується індивідуально. Отримайте консультацію — оцінимо поточні інциденти та запропонуємо план.

Kubernetes Documentation: Configure Liveness and Readiness Probes Node Problem Detector GitHub Repository

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

Останні роботи

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