Резервирование ресурсов узла в Azure Kubernetes Service (AKS)

В этой статье вы узнаете о резервировании ресурсов узла в Azure Kubernetes Service (AKS).

Резервирование ресурсов

AKS использует ресурсы узлов, чтобы помочь узлам функционировать в составе кластера. Это использование может привести к несоответствию между общими ресурсами узла и распределяемыми ресурсами в AKS.

AKS резервирует два типа ресурсов, ЦП и памяти на каждом узле для поддержания производительности и функциональности узла. По мере увеличения ресурсов узла объём резервируемых ресурсов также увеличивается из-за более высокой потребности в управлении пользовательскими подами. Помните, что вы не можете изменить резервирования ресурсов на узле.

Резервирования ЦП

Объём зарезервированных ресурсов ЦП зависит от типа узла и конфигурации кластера, что может привести к уменьшению объёма ЦП, доступного для выделения, из-за работы дополнительных функций. В следующей таблице показаны резервирования ЦП в милликорях:

Ядра ЦП на узле 1 ядро 2 ядра 4 ядра 8 ядер 16 ядер 32 ядра 64 ядра
ЦП, зарезервированные для Kube (миллиядра) 60 100 140 180 260 420 740

Резервирование памяти

В AKS зарезервированная память состоит из суммы двух значений:

AKS 1.29 и более поздние версии

  • По умолчанию для kubelet демона используется правило вытеснения memory.available < 100 Mi. Это правило гарантирует, что на узле в любой момент времени доступно для распределения не менее 100 Ми. Если объём доступной памяти на узле опускается ниже этого порогового значения, kubelet инициирует завершение одного из запущенных подов и освобождает память на хосте.

  • Скорость резервирования памяти , заданная в соответствии с меньшим значением: 20 МБ * Максимальное количество модулей pod, поддерживаемых на узле + 50 МБ или 25% общих ресурсов памяти системы.

    Examples:

    • Если виртуальная машина имеет 8 ГБ памяти, а узел поддерживает до 30 подов, AKS резервирует 20 МБ * 30 макс. число подов + 50 МБ = 650 МБ для kube-reserved. Allocatable space = 8 GB - 0.65 GB (kube-reserved) - 0.1 GB (eviction threshold) = 7.25 GB or 90.625% allocatable.
    • Если виртуальная машина предоставляет 4 ГБ памяти и узел поддерживает до 70 модулей, AKS резервирует 25% * 4 ГБ = 1000 МБ для kube-reserved, так как это меньше, чем 20 МБ * 70 макс. модулей + 50 МБ = 1450 МБ.

    Дополнительные сведения см. в разделе Настройка максимального количества pod на узел в кластере AKS.

Примечание

Чтобы настроить kubeReserved значения ЦП и памяти или hardEvictionThreshold в пулах узлов Linux, используйте параметры предварительной версии для пользовательской конфигурации узлов и зарегистрируйте флаг функции AKSNodeCustomizationPreview. Дополнительные сведения см. в разделе "Настройка конфигурации узла для пулов узлов Azure Kubernetes Service (AKS)".

Версии AKS до версии 1.29

  • kubelet демон по умолчанию имеет правило вытеснения memory.available < 750 Mi. Это правило гарантирует, что у узла всегда доступно для выделения не менее 750 Mi. Если объём доступной памяти на хосте опускается ниже этого порогового значения, kubelet инициирует завершение одного из запущенных pod’ов, освобождая память на хост-машине.
  • Регрессивная норма резервирования памяти для корректной работы демона kubelet (kube-reserved).
    • 25% от первых 4 ГБ памяти
    • 20% из следующих 4 ГБ памяти (до 8 ГБ)
    • 10% из следующих 8 ГБ памяти (до 16 ГБ)
    • 6% от следующих 112 ГБ памяти (до 128 ГБ)
    • 2% любой памяти более 128 ГБ

Примечание

AKS резервирует дополнительные 2 ГБ для системных процессов на узлах Windows, и этот объём не входит в расчётный объём памяти.

Правила выделения памяти и ресурсов процессора предназначены для следующего:

  • Поддерживайте агентские узлы в работоспособном состоянии, включая некоторые размещённые на них системные pod’ы, критически важные для работоспособности кластера.
  • Заставить узел сообщать о меньшем объёме памяти, доступной для выделения, и меньшем объёме ресурсов ЦП, чем если бы он не входил в кластер Kubernetes.

Например, если узел предоставляет 7 ГБ, это означает, что 34% памяти недоступны для выделения, включая жёсткий порог вытеснения 750 МиБ.

0.75 + (0.25*4) + (0.20*3) = 0.75 GB + 1 GB + 0.6 GB = 2.35 GB / 7 GB = 33.57% reserved

Помимо резервирования для самого Kubernetes, базовая ОС узла также резервирует объем ресурсов ЦП и памяти для поддержания функций ОС.

Соответствующие рекомендации см. в статье Рекомендации по использованию основных функций планировщика в AKS.

Дальнейшие действия