Compartilhar via


429 Erros de solicitações demais

Este artigo discute como solucionar problemas de falhas causadas por erros de "429 solicitações demais" em clusters do Microsoft Serviço de Kubernetes do Azure (AKS) (ou clusters que usam outra implementação do Kubernetes no Azure).

Sintomas

Você recebe erros que se assemelham ao seguinte texto:

O serviço retornou um erro.

Status=429

Code="OperationNotAllowed"

Message="O servidor rejeitou a solicitação porque muitas solicitações foram recebidas para essa assinatura."

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"}"}

Causa: volumes excessivos de chamadas fazem com que o Azure limite sua assinatura

Um cluster do Kubernetes no Azure (com ou sem AKS) que faz uma escala frequente para cima ou para baixo, ou usa o dimensionamento automático do cluster, pode causar um grande volume de chamadas HTTP. Esse volume de chamada pode resultar em falha, pois excede a cota atribuída para sua assinatura do Azure.

Para obter mais informações sobre esses erros, consulte Limitando solicitações do Azure Resource Manager e solucionando problemas de erros de limitação da API. Para obter informações sobre como analisar e identificar a causa desses erros e obter recomendações para resolve-los, consulte Analisar e identificar erros usando o AKS Diagnostic and Solve Problems.

Solução 1: atualizar para uma versão posterior do Kubernetes

Execute o Kubernetes 1.18. x ou posterior. Essas versões contêm muitas melhorias descritas em erros de limitação/429 do AKS e dão suporte a clusters grandes sem limitação. No entanto, se você ainda vir limitação (devido à carga real ou número de clientes na assinatura), poderá experimentar as soluções a seguir.

Solução 2: aumentar o intervalo de verificação do dimensionamento automático

Se você encontrar a limitação de diagnóstico "A limitação de dimensionamento automático do cluster foi detectada" que é causada pelo dimensionador automático do cluster, você poderá tentar aumentar o intervalo de verificação do dimensionador automático para reduzir o número de chamadas para VMSS (conjuntos de dimensionamento de máquina virtual) do dimensionador automático do cluster.

Solução 3: reconfigurar aplicativos de terceiros para fazer menos chamadas

Quando você filtra por agentes de usuário no diagnóstico "Exibir taxa de solicitação e detalhes de limitação", se encontrar aplicativos de terceiros (como aplicativos de monitoramento) que fazem um número excessivo de solicitações GET, altere as configurações desses aplicativos para reduzir a frequência das chamadas GET. Além disso, verifique se os clientes do aplicativo usam backoff exponencial ao chamar APIs do Azure.

Solução 4: dividir seus clusters em diferentes assinaturas ou regiões

Se houver vários clusters e pools de nós que usam conjuntos de dimensionamento de máquinas virtuais, tente dividir os clusters em diferentes assinaturas ou regiões (dentro da mesma assinatura). A maioria dos limites da API do Azure são limites compartilhados no nível da região da assinatura. Por exemplo, todos os clusters e clientes dentro do sub um e da região Leste dos EUA compartilham um limite para os conjuntos de dimensionamento de máquinas virtuais GET API. Portanto, você pode mover ou escalar novos clusters do AKS em uma nova região e ser desbloqueado na limitação da API do Azure. Essa técnica ajuda se você espera que os clusters tenham alta atividade (por exemplo, se você tiver um dimensionador automático de cluster ativo). Também ajuda se você tiver muitos clientes (como Rancher, Terraform e assim por diante). Como todos os clusters são diferentes em sua elasticidade e no número de clientes que pesquisam APIs do Azure, não há diretrizes genéricas sobre o número de clusters que você pode executar por nível de região de assinatura. Para diretrizes específicas, você pode criar um tíquete de suporte.

Analisar e identificar erros usando o AKS Diagnostic and Solve Problems

Para um cluster do AKS, você pode usar o AKS Diagnostic and Solve Problems para analisar e identificar a causa desses erros e obter recomendações para resolve-los. Navegue até seu cluster no portal do Azure e selecione Diagnosticar e resolver problemas na navegação à esquerda para abrir o AKS Diagnostic and Solve Problems. Pesquisa e abra a Limitação de Solicitação de Recursos do Azure, em que você pode obter um relatório com uma série de diagnóstico. Essas diagnóstico podem mostrar se o cluster experimentou uma limitação de taxa de solicitação (429 respostas) do Azure Resource Manager (ARM) ou provedor de recursos (RP) e de onde vem a limitação. Por exemplo:

  • A limitação da taxa de solicitação foi detectada para o cluster: este diagnóstico fornece algumas recomendações gerais se a limitação tiver sido detectada no cluster do AKS atual.

  • A limitação de dimensionamento automático do cluster foi detectada: esse diagnóstico mostra se a limitação foi detectada e se originou do dimensionador automático do cluster.

    Para reduzir o volume de solicitações do dimensionador automático do cluster, use os seguintes métodos:

    • Aumente o intervalo de verificação do dimensionamento automático para reduzir o número de chamadas do dimensionador automático do cluster para conjuntos de dimensionamento de máquinas virtuais. Esse método pode ter um impacto de latência negativa no tempo necessário para aumentar porque o dimensionador automático do cluster aguarda mais tempo antes de chamar o CRP (Provedor de Recursos de Computação) do Azure para uma nova máquina virtual.
    • Verifique se o cluster está em uma versão mínima do Kubernetes de 1.18. As versões 1.18 e posteriores do Kubernetes lidam melhor com o backoff da taxa de solicitação quando 429 respostas de limitação são recebidas. É altamente recomendável ficar dentro de versões do Kubernetes com suporte para receber patches de segurança.
  • Limitação – Resource Manager do Azure: este diagnóstico mostra o número de solicitações limitadas no intervalo de tempo especificado no cluster do AKS.

  • Taxa de Solicitação – Azure Resource Manager: este diagnóstico mostra o número total de solicitações no intervalo de tempo especificado no cluster do AKS.

  • Exibir detalhes da taxa de solicitação e do acelerador: esse diagnóstico tem vários diagramas para determinar os detalhes de limitação, incluindo solicitações limitadas e solicitações totais. Você também pode filtrar os resultados usando as seguintes dimensões:

    • Host: o host em que as respostas HTTP status 429 foram detectadas. As limitações de Resource Manager do Azure são provenientes do management.azure.com; qualquer outra coisa é um provedor de recursos de camada inferior.
    • Agente de usuário: solicitações com um agente de usuário especificado que foram limitados.
    • Operação: operações em que as respostas HTTP status 429 foram detectadas.
    • IP do cliente: o endereço IP do cliente que enviou as solicitações limitadas.

A limitação de solicitação pode ser causada por uma combinação de qualquer cluster nesta assinatura, não apenas pela taxa de solicitação desse cluster.

Exemplo 1: limitação de dimensionamento automático do cluster

Este exemplo é sobre analisar a limitação causada pelo dimensionador automático do cluster.

Se você encontrar a limitação de dimensionamento automático do cluster foi detectada no diagnóstico no AKS Diagnostic and Solve Problems>Known Issues, Availability and Performance>Azure Resource Request Throttling, ele indica que as solicitações emitidas pelo dimensionador automático do cluster foram limitadas.

O diagrama que mostra a limitação de solicitações do Dimensionador Automático do Cluster é detectado.

Você pode encontrar o número de solicitações limitadas e quando as solicitações são limitadas no diagnóstico de limitação – Resource Manager do Azure.

Diagrama que mostra quando as solicitações de dimensionamento automático do cluster são limitadas.

Você pode encontrar o número de todas as solicitações arm no mesmo período de tempo.

Diagrama de todas as solicitações do ARM.

Você pode marcar a taxa de solicitação Exibir e o diagnóstico de detalhes de limitação para encontrar os detalhes de limitação. Selecione 429s por Agente de Usuário na lista suspensa Selecionar filtro e você pode ver que as solicitações de dimensionamento automático são limitadas das 15:00 às 16:00.

Diagrama de limitações por agentes de usuário.

Você também pode encontrar o número total de solicitações limitadas para o dimensionador automático do cluster e outros agentes de usuário.

Diagrama de limitações totais por agente de usuário.

Você também pode filtrar limitações por operações. A operação de exclusão de VMSS VMSS é limitada nesse caso.

Diagrama de limitações por operações.

Você pode encontrar o número de solicitações limitadas e todas as solicitações agrupadas por operações.

Diagrama de limitações totais por operações.

Em seguida, você pode seguir as sugestões na Ação Recomendada para reduzir as limitações.

Diagrama mostra que a limitação de solicitações do Dimensionador Automático do Cluster é detectada.

Exemplo 2: limitação do Provedor de Nuvem

Este exemplo é sobre as limitações causadas pelo Provedor de Nuvem. Isso geralmente acontece ao operar recursos em clusters maiores, por exemplo, provisionando um Azure Load Balancer em um cluster que tem mais de 500 nós.

Se você encontrar limitação no cluster, poderá ver os detalhes de limitação no diagnóstico de taxa de solicitação de exibição e detalhes de limitação . Selecione 429s por Agente de Usuário na lista suspensa Selecionar filtro e você pode ver que as solicitações do provedor de nuvem foram limitadas das 03:00 às 06:00.

O diagrama que mostra a limitação é detectado.

Diagrama de limitações por agente de usuário.

Você também pode filtrar por operações para descobrir que a operação limitada é "Rede/loadBalancers/read".

Diagrama de limitações por operação.

Você pode usar o recurso de visualização do AKS baseado em IP do Nó Load Balancer para reduzir esse acelerador.

Entre em contato conosco para obter ajuda

Se você tiver dúvidas ou precisar de ajuda, crie uma solicitação de suporte ou peça ajuda à comunidade de suporte do Azure. Você também pode enviar comentários sobre o produto para a comunidade de comentários do Azure.