Да, есть несколько параметров для распределения ресурсов: Вы можете выделить память и ЦП для ваших модулей и выделить память и ЦП для ваших системных демонов вручную. В документации вы можете узнать, как это работает, с примером:
Пример сценария
Вот пример, иллюстрирующий вычисление, распределяемое по узлу:
- Узел имеет
32Gi
из memory
, 16 CPUs
и 100Gi
из Storage
--kube-reserved
установлен на cpu=1,memory=2Gi,ephemeral-storage=1Gi
--system-reserved
установлен на cpu=500m,memory=1Gi,ephemeral-storage=1Gi
--eviction-hard
установлен на memory.available<500Mi,nodefs.available<10%
В этом случае Allocatable
будет 14.5 CPUs
, 28.5Gi
памяти и 98Gi
локальнойместо хранения.Планировщик гарантирует, что общий объем памяти requests
во всех модулях на этом узле не превышает 28.5Gi
, а объем хранилища не превышает 88Gi
.Kubelet высвобождает модули, когда общее использование памяти между модулями превышает 28.5Gi
или если общее использование диска превышает 88Gi
Если все процессы на узле потребляют столько ЦП, сколько они могут, модули вместе не могут потреблять более 14.5 CPUs
.
Если kube-reserved
и / или system-reserved
не применяется, и системные демоны превышают свое резервирование, kubelet
высвобождает модули, когда общее использование памяти узла превышает 31.5Gi
или storage
превышает 90Gi
Вы можете выделить столько, сколько вам нужно для Kubernetes с флагом --kube-reserved
и для системы с флагом -system-reserved
.
Кроме того, если вам нужны более строгие правила для нерестовых стручков, вы можете попробовать использовать Pod Affinity.