Квоты ресурсов и ограничения диапазонов
Предотвращайте проблемы из-за шумных соседей и неконтролируемых рабочих нагрузок, задавая квоты ресурсов на уровне пространства имён и ограничения диапазонов для каждого модуля Pod.
«Квоты ресурсов и ограничения диапазонов» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 4 уроков всего.
Ограничения для общих кластеров
В общем кластере одна команда может случайно потребить все ресурсы. ResourceQuotas и LimitRanges служат ограничителями, поддерживают справедливое распределение ресурсов между пространствами имён и предотвращают сбои.
Что такое ResourceQuota
ResourceQuota ограничивает общий объём ресурсов, который может потреблять пространство имён: CPU, память и количество объектов, таких как поды или службы.
Квота вычислительных ресурсов
Эта квота ограничивает суммарные запросы и ограничения для всех подов в пространстве имён.
apiVersion: v1
kind: ResourceQuota
metadata:
name: team-compute
namespace: team-a
spec:
hard:
requests.cpu: '4'
requests.memory: 8Gi
limits.cpu: '8'
limits.memory: 16GiКвоты на количество объектов
Квоты также могут ограничивать количество объектов каждого типа, предотвращая случайное неконтролируемое разрастание.
spec:
hard:
pods: '20'
services: '5'
persistentvolumeclaims: '10'Правило применения квоты
Если задана ResourceQuota для вычислительных ресурсов, каждый под обязан объявить запросы и ограничения, иначе он будет отклонён. Квота не может учитывать поды без ограничений.
Проверка использования квоты
Проверяйте, какая доля квоты используется в данный момент.
kubectl describe resourcequota team-compute -n team-a
# Resource Used Hard
# requests.cpu 2 4
# requests.memory 3Gi 8GiЧто такое LimitRange
LimitRange задаёт значения по умолчанию и ограничения для отдельных объектов в пространстве имён, поэтому отдельные поды остаются ограниченными, даже если разработчик забыл задать значения.
Значения по умолчанию и ограничения
LimitRange может добавлять запросы и ограничения по умолчанию, а также задавать минимальные и максимальные значения для каждого контейнера.
apiVersion: v1
kind: LimitRange
metadata:
name: container-limits
namespace: team-a
spec:
limits:
- type: Container
default:
cpu: 500m
memory: 256Mi
defaultRequest:
cpu: 250m
memory: 128Mi
max:
cpu: '2'
memory: 1GiКак они работают вместе
LimitRange заполняет значения по умолчанию для каждого контейнера, а затем ResourceQuota суммирует всё и сравнивает с ограничением пространства имён. Вместе они обеспечивают разумный размер каждого пода и справедливый общий объём ресурсов для пространства имён.
Устранение причин отклонения
Если под отклонён, ошибка указывает нарушенную политику. Внимательно прочитайте её: она сообщает, превысили ли Вы квоту или нарушили ограничение LimitRange.
# exceeded quota: team-compute, requested: requests.cpu=2, used: 3, limited: 4
# maximum cpu usage per Container is 2, but limit is 4Советы для промышленной эксплуатации
- Задайте LimitRange, чтобы забытые запросы не нарушали квоту
- Рассчитывайте квоты по реальному использованию, оставляя запас для всплесков нагрузки
- Регулярно проверяйте использование и корректируйте квоты по мере роста команд
Быстрая проверка
Проверьте, насколько хорошо Вы понимаете ограничения пространства имён.
Итоги
Вы научились обеспечивать справедливое распределение ресурсов с помощью ResourceQuotas (ограничений на вычислительные ресурсы и количество объектов в пространстве имён) и LimitRanges (значений по умолчанию и ограничений для отдельных контейнеров). При совместном использовании они предотвращают проблемы «шумного соседа» и поддерживают стабильность общих кластеров — это важная практика промышленной эксплуатации.
Часто задаваемые вопросы
Урок «Квоты ресурсов и ограничения диапазонов» бесплатный?
Да — полный текст урока «Квоты ресурсов и ограничения диапазонов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.
Чему я научусь в уроке «Квоты ресурсов и ограничения диапазонов»?
Предотвращайте проблемы из-за шумных соседей и неконтролируемых рабочих нагрузок, задавая квоты ресурсов на уровне пространства имён и ограничения диапазонов для каждого модуля Pod. Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать DevOps Bootcamp?
Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Квоты ресурсов и ограничения диапазонов»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке DevOps Bootcamp?
Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Диагностика распространённых проблем
- Отладка Pods и сервисов
- Лучшие практики и советы для эксплуатации
- Квоты ресурсов и ограничения диапазонов