Все статьи
KubernetesCost OptimizationDevOpsCloud

Kubernetes: как сократить расходы на кластер на 40%

InfoScale Team·20 февраля 2026· 10 мин

Типичная картина: компания переходит на Kubernetes, радуется масштабируемости, а потом получает счёт в 3 раза больше ожидаемого. Мы провели аудит 15+ кластеров за последний год и нашли одни и те же паттерны расточительности. Вот как их исправить.

Проблема №1: Неправильные resource requests

Это самая распространённая причина переплаты. Разработчики ставят requests по принципу «с запасом» или копируют значения из документации. Результат: ноды загружены на 15-20%, а вы платите за 100%.

# ❌ Типичная ошибка
resources:
  requests:
    cpu: "2"          # реально использует 0.1
    memory: "4Gi"    # реально использует 512Mi
# ✅ После аудита и VPA
resources:
  requests:
    cpu: "150m"
    memory: "600Mi"

Инструмент: Vertical Pod Autoscaler (VPA) в режиме recommendation — покажет реальное потребление за последние 7 дней и предложит оптимальные значения.

Проблема №2: Ноды не масштабируются вниз

Cluster Autoscaler добавляет ноды при нагрузке, но часто не удаляет их после спада. Причины: Pod Disruption Budgets настроены слишком жёстко, поды с local storage, отсутствие аннотаций.

# Проверить, почему нода не удаляется:
kubectl describe node <node-name> | grep -A5 "cluster-autoscaler"
# Разрешить eviction для stateless подов:
kubectl annotate pod <pod> \
  cluster-autoscaler.kubernetes.io/safe-to-evict=true

Проблема №3: Spot-инстансы не используются

Spot/Preemptible инстансы стоят на 60-80% дешевле on-demand. Большинство stateless workloads (веб-серверы, воркеры, batch-задачи) отлично работают на Spot с правильной конфигурацией.

$0.192/h
On-demand (c5.xlarge)
$0.058/h
Spot (c5.xlarge)
70%
Экономия

Стратегия: смешанные node pools (on-demand для критичных сервисов, Spot для остального) + Karpenter для умного выбора типов инстансов.

Проблема №4: Неиспользуемые ресурсы

LoadBalancers, PersistentVolumes, зарезервированные IP-адреса — всё это стоит денег даже когда не используется. После удаления namespace ресурсы часто остаются.

# Найти неиспользуемые PV:
kubectl get pv | grep Released
# Найти LoadBalancers без endpoints:
kubectl get svc --all-namespaces | grep LoadBalancer
# Инструмент для автоматического поиска:
kubecost / opencost — cost allocation по namespace/label

Реальные результаты аудита

Вот типичные результаты после применения всех четырёх методов на production-кластере среднего размера (20-30 нод):

МетодЭкономия
Оптимизация resource requests (VPA)15-20%
Правильный Cluster Autoscaler10-15%
Spot-инстансы для stateless workloads20-30%
Удаление неиспользуемых ресурсов5-10%
Итого40-50%

Чеклист для быстрого аудита

  • Установить VPA в режиме recommendation и посмотреть рекомендации через 7 дней
  • Проверить utilization нод: kubectl top nodes
  • Найти поды с requests >> actual usage через Grafana/Prometheus
  • Проверить PDB настройки для stateless сервисов
  • Посчитать долю Spot-инстансов в кластере (цель: 60-70%)
  • Найти Released PV и неиспользуемые LoadBalancers
  • Установить Kubecost/OpenCost для постоянного мониторинга расходов

Хотите провести аудит вашего кластера?

Мы проводим аудит Kubernetes-инфраструктуры за 3-5 дней. Получите конкретный список изменений с ожидаемой экономией.