Запросы и ограничения ресурсов
Задавайте запросы и ограничения CPU и памяти для Pods, чтобы эффективно распределять ресурсы и предотвращать их нехватку.
«Запросы и ограничения ресурсов» — бесплатный урок Kubernetes Basics на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Kubernetes Basics, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Kubernetes Basics содержит 4 уроков всего.
Потребности ресурсов в Kubernetes
Как и любому приложению, Вашим Pod нужны ресурсы для работы. Kubernetes эффективно управляет этими ресурсами с помощью запросов ресурсов и ограничений ресурсов.
Эти параметры сообщают Kubernetes, сколько CPU и памяти требуется Вашим Pod и сколько им разрешено использовать, обеспечивая справедливое распределение ресурсов.
Запросы CPU: гарантия CPU
Запрос CPU сообщает Kubernetes минимальный объём CPU, необходимый Pod для стабильной работы. Это гарантия!
- Kubernetes использует запросы, чтобы размещать Pod на узлах с достаточным количеством доступных ресурсов.
- Если на узле недостаточно CPU для выполнения запроса, Pod не будет размещён на этом узле.
- Это помогает предотвратить нехватку ресурсов для важных приложений.
Единицы измерения CPU и пример запроса
CPU измеряется в «ядрах» или «миллиядрах» (m). 1000m равняется 1 ядру CPU. Поэтому 500m — это половина ядра.
Вот как запросить 0,5 ядра CPU в определении Pod:
apiVersion: v1
kind: Pod
metadata:
name: cpu-request-pod
spec:
containers:
- name: my-container
image: nginx
resources:
requests:
cpu: "500m"Ограничения CPU: предотвращение чрезмерного использования
Ограничение CPU задаёт максимальный объём CPU, который может использовать Pod. Это верхний предел.
- Если Pod пытается использовать больше CPU, чем разрешено ограничением, Kubernetes будет ограничивать его.
- Это означает, что потребление CPU Pod будет ограничено, и он не сможет забирать ресурсы у других Pod на том же узле.
Ограничение CPU на практике
Вот пример задания ограничения CPU. Если этот Pod попытается использовать больше одного ядра CPU, его использование будет ограничено, то есть производительность уменьшится.
apiVersion: v1
kind: Pod
metadata:
name: cpu-limit-pod
spec:
containers:
- name: my-container
image: nginx
resources:
limits:
cpu: "1"Запросы памяти: гарантия RAM
Подобно CPU, запрос памяти указывает минимальный объём RAM, необходимый Pod для работы.
- Kubernetes использует этот параметр, чтобы найти узел с достаточным объёмом свободной памяти для Pod.
- Если на узле заканчивается память, Pod без запросов часто завершаются первыми (выселяются), чтобы освободить место.
Единицы измерения памяти и пример запроса
Память измеряется в байтах. Распространённые единицы измерения — Mi (мебибайты) и Gi (гибибайты).
100Mi — это 100 мебибайт. Вот как запросить 256 МиБ памяти:
apiVersion: v1
kind: Pod
metadata:
name: mem-request-pod
spec:
containers:
- name: my-container
image: nginx
resources:
requests:
memory: "256Mi"Ограничения памяти: предотвращение OOM
Ограничение памяти определяет максимальный объём памяти, который может использовать под.
- Если под превышает установленное ограничение памяти, операционная система немедленно завершает его работу с ошибкой нехватки памяти (OOM). Обычно это отображается как «завершён из-за OOM».
- Это не позволяет одному неконтролируемо потребляющему ресурсы поду занять всю память узла и вывести из строя весь узел.
Ограничение памяти в действии
Для этого пода установлено ограничение памяти 512 МиБ. Если он попытается использовать больше, его работа будет завершена (из-за OOM), чтобы защитить другие рабочие нагрузки и узел.
apiVersion: v1
kind: Pod
metadata:
name: mem-limit-pod
spec:
containers:
- name: my-container
image: nginx
resources:
limits:
memory: "512Mi"Рекомендации: запросы и ограничения
Рекомендуется задавать и запросы, и ограничения для всех подов. Это обеспечивает стабильность и предсказуемость кластера.
- Запросы гарантируют подам минимальный объём ресурсов, необходимый для планирования.
- Ограничения не позволяют подам и самому узлу испытывать нехватку ресурсов.
Вот полный пример:
apiVersion: v1
kind: Pod
metadata:
name: full-resource-pod
spec:
containers:
- name: my-app
image: my-registry/my-app:1.0
resources:
requests:
cpu: "200m"
memory: "128Mi"
limits:
cpu: "500m"
memory: "256Mi"Проверка ресурсов
У Вас определён под с запросом CPU 200m и ограничением CPU 1 (то есть 1000m).
Что произойдёт, если этот под попытается использовать 1.5 ядра CPU?
Итоги: управление ресурсами
В этом уроке мы изучили запросы ресурсов и ограничения ресурсов в Kubernetes.
- Запросы (CPU и память) гарантируют минимальный объём ресурсов для планирования пода.
- Ограничения (CPU и память) ограничивают максимальное использование ресурсов и предотвращают конкуренцию за них.
- Превышение ограничений CPU приводит к ограничению производительности, а превышение ограничений памяти — к завершению работы (из-за OOM).
- Всегда задавайте и запросы, и ограничения, чтобы производительность приложений оставалась стабильной и предсказуемой!
Часто задаваемые вопросы
Урок «Запросы и ограничения ресурсов» бесплатный?
Да — полный текст урока «Запросы и ограничения ресурсов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Kubernetes Basics, подпишись на CoddyKit PRO. Курс Kubernetes Basics содержит 4 уроков всего.
Чему я научусь в уроке «Запросы и ограничения ресурсов»?
Задавайте запросы и ограничения CPU и памяти для Pods, чтобы эффективно распределять ресурсы и предотвращать их нехватку. Ты практикуешь Kubernetes Basics с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Kubernetes Basics?
Предыдущий опыт не требуется. Kubernetes Basics на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Запросы и ограничения ресурсов»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Kubernetes Basics?
Да. Каждый урок Kubernetes Basics включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Запросы и ограничения ресурсов
- Селекторы узлов и аффинность
- Метki и допускающие правила
- Приоритет и вытеснение подов