Распространённые ошибки etcd и как их исправить

Введение etcd — это распределённое хранилище ключ-значение, критически важное для работы Kubernetes. Оно хранит конфигурацию и состояние кластера. Ошибки в etcd могут привести к нестабильности или недоступности кластера. В этой статье мы рассмотрим типичные ошибки etcd, их причины и решения. 1. etcdserver: request timed out ❓ Причина Проблемы с сетью или задержки ввода-вывода на диске между узлами etcd. 🛠️ Решение Проверьте производительность диска: iostat -xz 1 Используйте SSD для хранения etcd. Проверьте сетевую задержку: ping <etcd-member-IP> 2. etcdserver: leader changed ❓ Причина Частая смена лидера указывает на нестабильность кластера. ...

сентября 13, 2025 · 2 минуты · 229 слов · John Cena

Как защититься от DDoS-атак: стратегии для DevOps и разработчиков

DDoS (распределённая атака типа «отказ в обслуживании») — это массовая отправка запросов к вашему сервису с целью перегрузить систему. В статье расскажем, как защищать Kubernetes-кластеры, API и серверы от DDoS — на практике и с примерами. 1. Что такое DDoS-атака? Сеть заражённых устройств (ботнет) начинает массово слать трафик на ваш сервис. Это может: Забить канал (UDP flood) Использовать уязвимость протокола (SYN flood) Ломать API (HTTP flood) 2. Основные методы защиты 🔐 2.1. Ограничение скорости (rate limiting) NGINX-пример: ...

сентября 11, 2025 · 1 минута · 198 слов · DevOps Insights

HPA в Kubernetes: что это, плюсы и минусы

Horizontal Pod Autoscaler (HPA) — это встроенный в Kubernetes механизм, который автоматически масштабирует количество подов на основе текущей загрузки, например, по CPU или памяти. Разберем, как работает HPA, когда он полезен, его плюсы и минусы, и как его настроить. 1. Что такое HPA HPA отслеживает метрики (обычно CPU) и масштабирует поды в пределах заданного диапазона. Пример: apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: my-app-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: my-app minReplicas: 2 maxReplicas: 10 metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 75 2. Преимущества HPA ⚖️ Автоматическое масштабирование по нагрузке 💰 Снижение затрат при снижении нагрузки 📈 Повышение стабильности при росте трафика 🔧 Поддержка кастомных метрик через Prometheus Adapter 3. Минусы и ограничения 🐢 Задержка метрик: не всегда быстро реагирует на пиковую нагрузку ⚠️ Неэффективен для краткосрочных всплесков ⏳ Поды не запускаются мгновенно 📦 Зависит от Metrics Server или адаптера 🧩 Не регулирует requests/limits ресурсов — рекомендуется использовать с VPA 4. Когда HPA полезен Статeless-приложения: API, веб-сервисы Микросервисы с плавной нагрузкой Когда нужно быстро масштабироваться без участия человека 5. Когда HPA не лучший выбор Приложения с состоянием (например, базы данных) Сценарии с критичной задержкой Отсутствие настроенной метрик-инфраструктуры 6. Заключение HPA — один из главных инструментов масштабирования в Kubernetes. Он повышает устойчивость приложений и помогает эффективно использовать ресурсы. Но в некоторых случаях стоит дополнительно использовать VPA или KEDA. ...

сентября 5, 2025 · 2 минуты · 222 слова · DevOps Insights

Как автоматически завершать долгие запросы в PostgreSQL

Долгие запросы могут вызвать серьёзные проблемы с производительностью PostgreSQL. Рассказываем, как автоматизировать их завершение. Зачем убивать долгие запросы? На практике такие запросы могут: Блокировать таблицы и строки Съедать память и процессор Вызывать дедлоки Мешать миграциям или мониторингу Причины: Пропущенные WHERE-условия Сложные отчёты Подвисшие клиенты Как работает скрипт Мы используем Bash-скрипт для: Подключения к PostgreSQL Поиска запросов старше 60 секунд Автоматического завершения этих запросов Скрипт для завершения долгих запросов 1. Переменные подключения #!/bin/bash PG_CONN="postgres://user:pass@postgres-host/postgres-db" QUERY_TIMEOUT="60" PSQL_RUN="psql $PG_CONN -Atc" 2. SQL-запрос QUERY="SELECT pid FROM pg_stat_activity WHERE now() - query_start > '${QUERY_TIMEOUT} seconds'::interval" 3. Завершение echo "Ищем запросы дольше $QUERY_TIMEOUT секунд..." pids=$(${PSQL_RUN} "$QUERY") for pid in $pids; do echo "Завершаем PID $pid..." ${PSQL_RUN} "SELECT pg_terminate_backend($pid)" done Автоматизация через Cron Чтобы запускать каждые 5 минут: ...

сентября 5, 2025 · 1 минута · 178 слов · DevOps Insights

Управление ресурсами в Kubernetes: LimitRange и ResourceQuota

Управление ресурсами в Kubernetes: LimitRange и ResourceQuota Для обеспечения стабильности и справедливого распределения ресурсов в Kubernetes предусмотрены два инструмента: LimitRange и ResourceQuota. В этой статье мы рассмотрим, в чем их суть, чем они отличаются и как использовать на практике. Что такое LimitRange? LimitRange — это объект политики Kubernetes, задающий значения по умолчанию для лимитов и запросов ресурсов контейнеров. Зачем нужен? Чтобы избежать ситуаций, когда разработчики забывают указать лимиты, и под потребляет слишком много ресурсов. ...

сентября 5, 2025 · 2 минуты · 222 слова · John Cena