Поделиться через


429: слишком много ошибок запросов

В этой статье описывается устранение неполадок, вызванных ошибками "429 Too Many Requests" в кластерах Microsoft Служба Azure Kubernetes (AKS) (или кластерах, использующих другую реализацию Kubernetes в Azure).

Симптомы

Появляется сообщение об ошибках, которые выглядят следующим образом:

Служба вернула ошибку.

Status=429

Code="OperationNotAllowed"

Message="Сервер отклонил запрос, так как для этой подписки получено слишком много запросов".

Details=[{
"code":"TooManyRequests",
"message":"{
\"operationGroup\":\"HighCostGetVMScaleSet30Min\",
\"startTime\":\"2020-09-20T07:13:55.2177346+00:00\",
\"endTime\":\"2020-09-20T07:28:55.2177346+00:00\",
\"allowedRequestCount\":1800,
\"measuredRequestCount\":2208
}",
"target":"HighCostGetVMScaleSet30Min"
}]

InnerError={"internalErrorCode":"TooManyRequestsReceived"}"}

Причина. Чрезмерные объемы вызовов приводят к тому, что Azure ограничит вашу подписку

Кластер Kubernetes в Azure (с AKS или без нее), который выполняет частое увеличение или уменьшение масштаба или использует средство автомасштабирования кластера, может вызвать большой объем HTTP-вызовов. Этот том вызовов может привести к сбою, так как он превышает назначенную квоту для подписки Azure.

Дополнительные сведения об этих ошибках см. в разделах Регулирование запросов Azure Resource Manager и Устранение ошибок регулирования API. Сведения о том, как проанализировать и определить причину этих ошибок и получить рекомендации по их устранению, см. в статье Анализ и выявление ошибок с помощью диагностики и решения проблем AKS.

Решение 1. Обновление до более поздней версии Kubernetes

Запустите Kubernetes 1.18. x или более поздней версии. Эти версии содержат множество улучшений, описанных в статье Об ошибках регулирования AKS/429 и поддержке больших кластеров без регулирования. Однако если вы по-прежнему видите регулирование (из-за фактической загрузки или количества клиентов в подписке), можно попробовать следующие решения.

Решение 2. Увеличение интервала сканирования автомасштабирования

Если вы обнаружите, что в диагностических отчетах "Регулирование автомасштабирования кластера обнаружено" , вызванное автомасштабированием кластера, можно попытаться увеличить интервал сканирования средства автомасштабирования , чтобы уменьшить количество вызовов масштабируемых наборов виртуальных машин (VMSS) из автомасштабирования кластера.

Решение 3. Перенастройка сторонних приложений для меньшего количества вызовов

При фильтрации по пользовательским агентам в диагностике "Просмотр частоты запросов и сведений о регулировании" вы обнаружите сторонние приложения (например, приложения мониторинга), которые выполняют чрезмерное количество запросов GET, измените параметры этих приложений, чтобы уменьшить частоту вызовов GET. Кроме того, убедитесь, что клиенты приложений используют экспоненциальную обратную передачу при вызове API Azure.

Решение 4. Разделение кластеров на разные подписки или регионы

Если существует множество кластеров и пулов узлов, использующих масштабируемые наборы виртуальных машин, попробуйте разделить кластеры на разные подписки или регионы (в пределах одной подписки). Большинство ограничений API Azure являются общими ограничениями на уровне региона подписки. Например, все кластеры и клиенты в пределах одной и восточной части США используют ограничение для API GET масштабируемых наборов виртуальных машин. Таким образом, вы можете перемещать или масштабировать новые кластеры AKS в новом регионе и разблокировать регулирование API Azure. Этот метод помогает, если ожидается высокая активность кластеров (например, если у вас активное средство автомасштабирования кластера). Это также помогает, если у вас много клиентов (например, Rancher, Terraform и т. д.). Так как все кластеры отличаются по эластичности и количеству клиентов, опрашивая API Azure, нет общих рекомендаций по количеству кластеров, которые можно запускать для каждого региона подписки. Для получения конкретных рекомендаций можно создать запрос в службу поддержки.

Анализ и выявление ошибок с помощью диагностики и решения проблем AKS

Для кластера AKS можно использовать функцию диагностики и решения проблем AKS , чтобы проанализировать и определить причину этих ошибок и получить рекомендации по их устранению. Перейдите к кластеру в портал Azure и выберите Диагностика и решение проблем в области навигации слева, чтобы открыть AKS Диагностика и решение проблем. Поиск и откройте раздел Регулирование запросов ресурсов Azure, где можно получить отчет с серией диагностика. Эти диагностика могут показать, произошло ли в кластере регулирование скорости запросов (429 ответов) Resource Manager Azure (ARM) или поставщика ресурсов (RP) и откуда поступает регулирование. Например:

  • Для кластера обнаружено регулирование скорости запросов. Эта диагностика предоставляет некоторые общие рекомендации, если в текущем кластере AKS обнаружено регулирование.

  • Обнаружено регулирование автомасштабирования кластера. Эта диагностика показывает, было ли обнаружено регулирование и возникло ли из средства автомасштабирования кластера.

    Чтобы уменьшить объем запросов от средства автомасштабирования кластера, используйте следующие методы:

    • Увеличьте интервал сканирования автомасштабирования, чтобы уменьшить количество вызовов из автомасштабирования кластера в масштабируемые наборы виртуальных машин. Этот метод может отрицательно повлиять на время, затраченное на масштабирование, так как средство автомасштабирования кластера дольше ожидает перед вызовом поставщика вычислительных ресурсов Azure (CRP) для новой виртуальной машины.
    • Убедитесь, что для кластера установлена минимальная версия Kubernetes 1.18. Kubernetes версии 1.18 и более поздних версий лучше обрабатывают частоту запросов при получении 429 ответов регулирования. Мы настоятельно рекомендуем оставаться в поддерживаемых версиях Kubernetes для получения исправлений для системы безопасности.
  • Регулирование — Azure Resource Manager. Эта диагностика показывает количество регулируемых запросов в указанном диапазоне времени в кластере AKS.

  • Частота запросов — Azure Resource Manager. Эта диагностика показывает общее количество запросов в указанном диапазоне времени в кластере AKS.

  • Просмотр сведений о частоте запросов и регулировании. Эта диагностика содержит несколько схем для определения сведений о регулировании, включая регулируемые запросы и общее количество запросов. Вы также можете отфильтровать результаты, используя следующие измерения:

    • Узел: узел, на котором обнаружены ответы http status 429. Регулирование azure Resource Manager происходит отmanagement.azure.com; все остальное является поставщиком ресурсов нижнего уровня.
    • Агент пользователя: запросы с указанным агентом пользователя, которые были отрегулировали.
    • Операция: операции, в которых обнаружены ответы HTTP-состояния 429.
    • IP-адрес клиента: IP-адрес клиента, отправляющего регулируемые запросы.

Регулирование запросов может быть вызвано сочетанием любого кластера в этой подписке, а не только скоростью запросов для этого кластера.

Пример 1. Регулирование автомасштабирования кластера

В этом примере анализируется регулирование, вызванное автомасштабированием кластера.

Если вы обнаружите, что регулирование автомасштабирования кластера было обнаружено в статье Диагностика и решение проблем> сизвестными проблемами, доступностью и производительностью> регулированиязапросов ресурсов Azure, это означает, что запросы, выданные автомасштабированием кластера, были отрегулированы.

Схема, на которую показано, как обнаружено регулирование запросов автомасштабирования кластера.

Количество регулируемых запросов и время их регулирования можно найти в диагностике Регулирования — Azure Resource Manager.

Схема, показывающая, когда запросы автомасштабирования кластера регулируются.

Вы можете найти количество всех запросов ARM за один и тот же период времени.

Схема всех запросов ARM.

Для поиска сведений о регулировании можно проверка диагностику Просмотр частоты запросов и сведения о регулировании. Выберите 429s by User Agent в раскрывающемся списке Выбор фильтра , и вы увидите, что запросы автомасштабирования регулируются с 15:00 до 16:00.

Схема регулирования агентами пользователей.

Вы также можете найти общее количество регулируемых запросов для средства автомасштабирования кластера и других пользовательских агентов.

Схема общего числа регулирования агентом пользователя.

Вы также можете фильтровать регулирование по операциям. В этом случае операция удаления виртуальной машины VMSS регулируется.

Схема регулирования по операциям.

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

Схема общего регулирования по операциям.

Затем вы можете следовать рекомендациям в рекомендуемом действии , чтобы уменьшить регулирование.

На схеме показано, что обнаружено регулирование запросов автомасштабирования кластера.

Пример 2. Регулирование поставщика облачных служб

В этом примере приведены ограничения, вызванные поставщиком облачных служб. Это часто происходит при работе с ресурсами в больших кластерах, например при подготовке Azure Load Balancer в кластере с более чем 500 узлами.

Если вы найдете регулирование в кластере, вы можете просмотреть сведения о регулировании в разделе Просмотр сведений о частоте запросов и регулировании . Выберите 429s by User Agent в раскрывающемся списке Выбор фильтра , и вы увидите, что запросы поставщиков облачных служб были отрегулированы с 03:00 до 06:00.

Схема, показывающая обнаружение регулирования.

Схема регулирования агентом пользователя.

Вы также можете отфильтровать по операциям, чтобы узнать, что для регулируемых операций задано значение "Network/loadBalancers/read".

Схема регулирования по операции.

Для уменьшения этого регулирования можно использовать предварительную версию функции AKS Node на основе IP-адресов Load Balancer.

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

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