Kubernetes · 3 min read · Dec 09, 2025
Ограничения ресурсов в Kubernetes

Если узел имеет достаточно ресурсов, контейнер может использовать больше ресурсов. Мы можем указать, сколько каждого ресурса требуется контейнеру. Общими ресурсами для указания являются CPU и память. Когда мы указываем запрос ресурсов для контейнеров в Pod, планировщик решает, на каком узле разместить Pod. Когда мы указываем ограничение ресурсов для контейнера, kubelet заботится о том, чтобы работающий контейнер не мог использовать больше установленного нами лимита.
Например, если мы установим запрос памяти в 100 MiB для контейнера, то контейнер может попытаться использовать больше оперативной памяти. Но если мы установим ограничение памяти в 4GiB для этого контейнера, то среда выполнения предотвращает использование контейнером более чем установленного лимита ресурсов.
CPU и память называются вычислительными ресурсами.
Каждый контейнер Pod может указать один или несколько из следующих параметров:
- ограничения на cpu
- ограничения на память
- ограничения на hugepages-
- запросы на cpu
- запросы на память
- запросы на hugepages-
Чтобы узнать больше о ресурсах в Kubernetes, нажмите здесь, чтобы посетить официальную документацию Kubernetes.
В этой статье мы увидим пример ограничения ресурсов и запроса для CPU и памяти. Мы также будем использовать Metric Server. Metric Server — это агрегатор данных об использовании ресурсов в кластере, и он не развернут по умолчанию в кластере. Мы будем использовать этот Metric Server, чтобы увидеть потребление ресурсов подами.
Предварительные требования
- Кластер Kubernetes с как минимум 1 рабочим узлом.
Если вы хотите научиться создавать кластер Kubernetes, нажмите здесь. Этот гид поможет вам создать кластер Kubernetes с 1 Master и 2 узлами на AWS Ubuntu 18.04 EC2 Instances.
Что мы будем делать?
- Ограничения ресурсов
Ограничения ресурсов
Прежде чем мы продолжим и создадим поды с указанными требованиями к ресурсам, давайте установим Metric Server.
Клонируйте репозиторий Metric Server с Github, используя следующую команду, и установите его.
git clone https://github.com/kodekloudhub/kubernetes-metrics-server.gitcd kubernetes-metrics-server/Создайте Metric Server, используя объектные файлы.
kubectl create -f .
Подождите некоторое время, чтобы инициализировать Metric Server. Через некоторое время вы можете выполнить следующую команду, чтобы мониторить узлы кластера.
kubectl top nodeТеперь создайте файл определения пода со следующим содержимым, который содержит запрос и ограничение памяти.
vim my-pod-with-memory.ymlapiVersion: v1
kind: Pod
metadata:
name: my-pod-memory-demo
spec:
containers:
- name: my-container-memory-demo
image: polinux/stress
resources:
limits:
memory: "50Mi"
requests:
memory: "20Mi"
command: ["stress"]
args: ["--vm", "1", "--vm-bytes", "30M", "--vm-hang", "1"]
Вы можете найти свойство “resources”, в котором мы указали лимит памяти как 50Mi и запрос памяти как 20Mi.
Проверьте существующие поды с помощью стандартного пространства имен в кластере.
kubectl get pods #Получить поды из стандартного пространства именСоздайте под, используя определение пода, созданное на предыдущем шаге.
kubectl create -f my-pod-with-memory.yml #Создать подkubectl get pods
Теперь, если вы получите детали пода, вы увидите, что под запрашивает 20Mi памяти и имеет лимит 50Mi памяти.
kubectl get podskubectl describe pod my-pod-memory-demo #Описание пода
Использование пода можно проверить с помощью следующей команды.
kubectl top pods #Проверить потребление ресурсов подом
Теперь создайте определение пода с запросом и ограничением CPU.
vim my-pod-with-cpu.ymlapiVersion: v1
kind: Pod
metadata:
name: my-pod-cpu-demo
spec:
containers:
- name: my-container-cpu-demo image: vish/stress
resources:
limits: cpu: "1"
requests:
cpu: "0.5"
args:
- -cpus
- "2"В приведенном выше файле вы можете увидеть, что определение имеет свойство “resource” с запросом CPU как 0.5 и лимитом как 1. Также обратите внимание, что мы передаем 2 CPU как нашу потребность, что больше лимита.
Теперь давайте создадим под с запросом и ограничением CPU, используя следующую команду.
kubectl apply -f my-pod-with-cpu.yml #Создать подkubectl get pods
Получите детали пода, который мы создали.
kubectl get podskubectl describe pod my-pod-cpu-demo
Вы можете увидеть, что под запросил 0.5 или 500m CPU с лимитом 1 CPU.
Чтобы проверить использование CPU, используйте следующую команду.
kubectl top pod #Проверить потребление ресурсов подом
На приведенном выше скриншоте вы можете увидеть, что даже после передачи 2 CPU в определении пода в качестве аргумента, он не может потреблять больше лимита, т.е. 1 CPU. Здесь под “my-pod-cpu-demo” мог потреблять 999m CPU, что эквивалентно 1 CPU, и он не мог увеличить свое потребление.
Заключение
В этой статье мы рассмотрели шаги для включения мониторинга в кластере с помощью Metric Server. Мы увидели, как под может запрашивать CPU и память и потреблять ресурсы не превышая установленный лимит.
Get new posts in your inbox
No spam. Unsubscribe anytime.
