Управление ресурсами в Kubernetes: LimitRange и ResourceQuota
Для обеспечения стабильности и справедливого распределения ресурсов в Kubernetes предусмотрены два инструмента: LimitRange
и ResourceQuota
.
В этой статье мы рассмотрим, в чем их суть, чем они отличаются и как использовать на практике.
Что такое LimitRange?
LimitRange
— это объект политики Kubernetes, задающий значения по умолчанию для лимитов и запросов ресурсов контейнеров.
Зачем нужен?
Чтобы избежать ситуаций, когда разработчики забывают указать лимиты, и под потребляет слишком много ресурсов.
Пример
apiVersion: v1
kind: LimitRange
metadata:
name: mem-limit-range
namespace: dev
spec:
limits:
- default:
memory: 512Mi
defaultRequest:
memory: 256Mi
type: Container
Все контейнеры в пространстве dev
получат лимиты по умолчанию.
Что такое ResourceQuota?
ResourceQuota
— это объект, ограничивающий общее количество ресурсов, доступных пространству имен.
Зачем нужен?
Чтобы управлять общим потреблением ресурсов (CPU, память, хранилище) на уровне команды или среды.
Пример
apiVersion: v1
kind: ResourceQuota
metadata:
name: dev-quota
namespace: dev
spec:
hard:
requests.cpu: "4"
requests.memory: 4Gi
limits.cpu: "8"
limits.memory: 8Gi
Это ограничит общее потребление ресурсов в пространстве dev
.
Основные отличия
Характеристика | LimitRange | ResourceQuota |
---|---|---|
Область действия | Каждый контейнер | Все пространство имен |
Назначение | Запросы и лимиты по умолчанию | Общее потребление ресурсов |
Можно вместе? | Да | Да |
Рекомендации
- Используйте оба механизма для полной защиты.
- Проверяйте
kubectl describe quota
иkubectl describe limitrange
при отладке. - Подключите мониторинг (например, Prometheus + Grafana).
Заключение
Грамотное использование LimitRange
и ResourceQuota
помогает поддерживать надежность и управляемость кластера Kubernetes.