429 Erros de muitas solicitações
Este artigo discute como solucionar problemas de falhas causadas por erros "429 Too Many Requests" em seus clusters do AKS (Serviço de Kubernetes do Microsoft Azure) (ou clusters que usam outra implementação do Kubernetes no Azure).
Sintomas
Você recebe erros semelhantes 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 esta assinatura."
Detalhes=[{
"código":"TooManyRequests",
"mensagem":"{
\"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 vertical ou reduzida frequente ou usa o dimensionador automático de cluster pode causar um grande volume de chamadas HTTP. Esse volume de chamadas pode resultar em falha, pois excede a cota atribuída para sua assinatura do Azure.
Para obter mais informações sobre esses erros, consulte Limitação de solicitações do Azure Resource Manager e Solução de problemas de erros de limitação de API. Para obter informações sobre como analisar e identificar a causa desses erros e obter recomendações para resolvê-los, consulte Analisar e identificar erros usando o AKS Diagnosticar e Resolver Problemas.
Solução 1: Atualizar para uma versão mais recente do Kubernetes
Execute o Kubernetes 1.18.x ou posterior. Essas versões contêm muitas melhorias descritas em Limitação do AKS/erros 429 e Suporte a clusters grandes sem limitação. No entanto, se você ainda vir a limitação (devido à carga real ou ao número de clientes na assinatura), tente as soluções a seguir.
Solução 2: Aumente o intervalo de verificação do dimensionador automático
Se você achar que a limitação do "Dimensionamento Automático de Cluster foi detectada" relata a limitação causada pelo dimensionador automático de cluster, tente aumentar o intervalo de verificação do dimensionador automático para reduzir o número de chamadas para VMSS (conjuntos de dimensionamento de máquinas virtuais) do dimensionador automático de cluster.
Solução 3: reconfigure aplicativos de terceiros para fazer menos chamadas
Ao filtrar por agentes de usuário no diagnóstico "Exibir taxa de solicitação e detalhes de limitação", se você 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 a retirada exponencial ao chamar APIs do Azure.
Solução 4: dividir os 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 de API do Azure são limites compartilhados no nível da região de assinatura. Por exemplo, todos os clusters e clientes dentro da região subum e Leste dos EUA compartilham um limite para a API GET dos conjuntos de dimensionamento de máquinas virtuais. Portanto, você pode mover ou dimensionar 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 sondam 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 obter orientações específicas, você pode criar um tíquete de suporte.
Analisar e identificar erros usando o AKS Diagnosticar e Resolver Problemas
Para um cluster do AKS, você pode usar o Diagnóstico e Solução de Problemas do AKS para analisar e identificar a causa desses erros e obter recomendações para resolvê-los. Navegue até o cluster no portal do Azure e selecione Diagnosticar e resolver problemas no painel de navegação à esquerda para abrir Diagnosticar e Resolver Problemas do AKS. Pesquise e abra a Limitação de Solicitação de Recursos do Azure, onde você pode obter um relatório com uma série de diagnósticos. Esses diagnósticos podem mostrar se o cluster experimentou alguma limitação de taxa de solicitação (429 respostas) do ARM (Azure Resource Manager) ou do RP (Provedor de Recursos) e de onde vem a limitação. Por exemplo:
A limitação da taxa de solicitação foi detectada para o cluster: esse diagnóstico fornece algumas recomendações gerais se a limitação tiver sido detectada no cluster atual do AKS.
A limitação do dimensionador automático de cluster foi detectada: esse diagnóstico será exibido se a limitação tiver sido detectada e originada do dimensionador automático de cluster.
Para reduzir o volume de solicitações do dimensionador automático de cluster, use os seguintes métodos:
- Aumente o intervalo de verificação do dimensionador automático para reduzir o número de chamadas do dimensionador automático de cluster para conjuntos de dimensionamento de máquinas virtuais. Esse método pode ter um impacto negativo na latência no tempo necessário para escalar verticalmente porque o dimensionador automático de 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. O Kubernetes versão 1.18 e versões posteriores lidam melhor com a retirada da taxa de solicitação quando 429 respostas de limitação são recebidas. É altamente recomendável permanecer nas versões do Kubernetes com suporte para receber patches de segurança.
Limitação – Azure Resource Manager: esse 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: esse 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 da limitação: esse diagnóstico tem vários diagramas para determinar os detalhes da 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 de status HTTP 429 foram detectadas. As limitações do Azure Resource Manager vêm de
management.azure.com
; qualquer outra coisa é um provedor de recursos de camada inferior. - Agente do usuário: solicitações com um agente do usuário especificado que foram limitadas.
- Operação: Operações em que as respostas do status HTTP 429 foram detectadas.
- IP do cliente: o endereço IP do cliente que enviou as solicitações limitadas.
- Host: o host em que as respostas de status HTTP 429 foram detectadas. As limitações do Azure Resource Manager vêm de
A limitação de solicitação pode ser causada por uma combinação de qualquer cluster nesta assinatura, não apenas a taxa de solicitação para esse cluster.
Exemplo 1: Limitação do Cluster-Auto-Scaler
Este exemplo trata da análise da limitação causada pelo dimensionador automático de cluster.
Se você achar que a limitação do dimensionador automático de cluster foi detectada no diagnóstico Diagnosticar e resolver problemas>conhecidos, disponibilidade e desempenho>do AKS, a limitação de solicitação de recurso do Azure, isso indica que as solicitações emitidas pelo dimensionador automático de cluster foram limitadas.
Você pode encontrar o número de solicitações limitadas e quando as solicitações são limitadas no diagnóstico Limitação – Azure Resource Manager .
Você pode encontrar o número de todas as solicitações do ARM no mesmo período.
Você pode verificar o diagnóstico Exibir taxa de solicitação e detalhes do acelerador para encontrar os detalhes de limitação. Selecione 429s por Agente do Usuário na lista suspensa Selecionar filtro e você poderá ver que as solicitações do dimensionador automático são limitadas das 15:00 às 16:00.
Você também pode encontrar o número total de solicitações limitadas para o dimensionador automático de cluster e outros agentes de usuário.
Você também pode filtrar limitações por operações. A operação de exclusão de VM VMSS é limitada nesse caso.
Você pode encontrar o número de solicitações limitadas e todas as solicitações agrupadas por operações.
Em seguida, você pode seguir as sugestões na Ação recomendada para reduzir as limitações.
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, provisionar um Azure Load Balancer em um cluster com mais de 500 nós.
Se você encontrar limitação em seu cluster, poderá ver os detalhes de limitação no diagnóstico Exibir taxa de solicitação e detalhes de limitação. Selecione 429s por Agente de Usuário na lista suspensa Selecionar filtro e você poderá ver que as solicitações do provedor de nuvem foram limitadas das 03:00 às 06:00.
Você também pode filtrar por operações para descobrir que a operação limitada é "Network/loadBalancers/read".
Você pode usar o Balanceador de Carga baseado em IP do nó do recurso de visualização do AKS para reduzir essa limitação.
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.