Ответ
Ресурсы для контейнеров в Pod задаются через секцию resources в манифесте. Ключевые параметры — requests (гарантированный минимум) и limits (жесткий максимум).
Пример определения в Deployment:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
template:
spec:
containers:
- name: app-container
image: myapp:latest
resources:
requests:
cpu: "100m" # 0.1 ядра CPU
memory: "256Mi" # 256 Мибибайт
limits:
cpu: "500m" # 0.5 ядра CPU
memory: "512Mi" # 512 Мибибайт
Практические последствия:
- CPU: Если контейнер пытается использовать больше CPU, чем указано в
limits, ядро Linux (cgroups) его "троттлит" (ограничивает). - Память: Превышение
limitsпо памяти приводит к завершению контейнера с статусомOOMKilled(Out Of Memory). - Планирование (Scheduling): При выборе ноды для пода планировщик Kubernetes (
kube-scheduler) учитываетrequests. Под будет размещен только на ноде, где есть достаточно свободных ресурсов для удовлетворения всехrequestsего контейнеров.
Для автоматического масштабирования на основе потребления ресурсов используется HorizontalPodAutoscaler (HPA).