Устранение неполадок с насыщенностью памяти в кластерах AKS

В этой статье рассматриваются методы устранения проблем с насыщенностью памяти. Насыщенность памяти возникает, если по крайней мере одно приложение или процесс требует больше памяти, чем узел контейнера может предоставить, или если узел исчерпает доступную память.

Предварительные требования

Симптомы

В следующей таблице описаны распространенные симптомы насыщенности памяти.

Симптом Description
Незапланированные модули pod Дополнительные модули pod не могут быть запланированы, если узел близок к заданному ограничению памяти.
Вытеснение pod Если узел не хватает памяти, kubelet может вытеснить модули pod. Хотя плоскость управления пытается перепланировать вытеснили модули pod на других узлах, имеющих ресурсы, нет никакой гарантии, что другие узлы имеют достаточно памяти для запуска этих модулей pod.
Узел не готов Насыщенность памяти может вызвать kubelet и containerd стать неответственным, в конечном итоге вызывая проблемы готовности узла.
Вне памяти (OOM) убивает Проблема OOM возникает, если вытеснение модуля pod не может предотвратить проблему с узлом.

Контрольный список по устранению неполадок

Чтобы уменьшить насыщенность памяти, используйте эффективные средства мониторинга и применяйте рекомендации.

Шаг 1. Определение узлов с насыщенностью памяти

Используйте любой из следующих методов для идентификации узлов с насыщенностью памяти:

  • В веб-браузере используйте функцию Аналитики контейнеров AKS в портал Azure.

  • В консоли используйте средство командной строки Kubernetes (kubectl).

Container Insights — это функция в AKS, которая отслеживает производительность рабочей нагрузки контейнера. Дополнительные сведения см. в разделе "Включение аналитики контейнеров" для кластера Служба Azure Kubernetes (AKS).

  1. На портал Azure найдите и выберите службы Kubernetes.

  2. В списке служб Kubernetes выберите имя кластера.

  3. В области навигации кластера найдите заголовок "Мониторинг " и выберите " Аналитика".

  4. Задайте соответствующее значение диапазона времени.

  5. Выберите вкладку "Узлы".

  6. В списке метрик выберите рабочий набор памяти (вычисляемый из allocatable).

  7. В селекторе процентилей задайте для примера значение Max, а затем дважды выберите метку столбца Max % . Это действие сортирует узлы таблицы по максимальному проценту используемой памяти от максимального до наименьшего.

    портал Azure снимок экрана: представление

  8. Так как первый узел имеет наибольшее использование памяти, выберите этот узел, чтобы изучить использование памяти модулей pod, работающих на узле.

    портал Azure снимок экрана контейнеров узла в представлении

    Примечание.

    Процент использования ЦП или памяти для модулей pod зависит от запроса ЦП, указанного для контейнера. Он не представляет процент использования ЦП или памяти для узла. Таким образом, обратите внимание на фактическое использование ЦП или памяти, а не процент использования ЦП или памяти для модулей pod.

Теперь, когда вы определили модули pod, использующие высокую память, можно определить приложения, работающие в модуле pod.

Шаг 2. Ознакомьтесь с рекомендациями по предотвращению насыщенности памяти

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

Рекомендация Description
Использование запросов и ограничений памяти Kubernetes предоставляет параметры для указания минимального размера памяти (запроса) и максимального размера памяти (ограничения) для контейнера. Настроив лимиты для объектов pod, можно избежать нехватки памяти на узле. Убедитесь, что суммарные лимиты для всех работающих pod не превышают доступную память узла. Эта ситуация называется переполнением. Планировщик Kubernetes выделяет ресурсы на основе заданных запросов и ограничений через качество обслуживания (QoS). Без соответствующих ограничений планировщик может выделить слишком много объектов pod на одном узле. Это может в конечном итоге привести к отключению узла. Кроме того, когда компонент kubelet исключает объекты pod, он отдает приоритет тем, в которых использование памяти превышает определенные для них запросы. Рекомендуем установить запрос памяти, близкий к фактическому использованию.
Включение горизонтального автомасштабирования pod При масштабировании кластера вы можете сбалансировать запросы по множеству pod, чтобы насыщенности памяти не возникало. Этот метод позволяет уменьшить занимаемую память на определенном узле.
Использование тегов защиты от сопоставления В сценариях, когда память не имеет ограничений по умолчанию, вы можете использовать селекторы узлов, а также теги сходства или защиты от сходства, которые могут изолировать рабочую нагрузку на определенных узлах. С помощью тегов защиты от сходства можно запретить на этих узлах выделение модулей pod для других рабочих нагрузок. Это уменьшает проблему с насыщенностью памяти.
Выбор более высоких виртуальных машин SKU Виртуальные машины с большим объемом памяти (ОЗУ) лучше справляются с ее высоким потреблением. Чтобы использовать эту функцию, создайте новый пул узлов, изолируйте узлы (предотвратив их выделение) и очистите имеющийся пул.
Изоляция рабочих нагрузок системы и пользователей Рекомендуется запускать приложения в пользовательском пуле узлов. Эта конфигурация гарантирует, что вы можете изолировать модули pod, относящиеся к Kubernetes, в системном пуле, поддерживая производительность кластера.

Дополнительная информация

Заявление об отказе от ответственности за сведения о продуктах сторонних производителей

В этой статье упомянуты программные продукты независимых производителей. Корпорация Microsoft не дает никаких гарантий, подразумеваемых и прочих, относительно производительности и надежности этих продуктов.

Заявление об отказе от ответственности за контактные данные сторонней организации

Корпорация Майкрософт предоставляет контактные данные сторонних производителей в целях получения дополнительных сведений по данной теме. Эти данные могут быть изменены без предварительного уведомления. Корпорация Майкрософт не гарантирует точность контактных данных сторонних производителей.

Свяжитесь с нами для получения помощи

Если у вас есть вопросы или вам нужна помощь, создайте запрос в службу поддержки или обратитесь за поддержкой сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.