Condividi tramite


429 Troppi errori di richieste

Questo articolo illustra come risolvere gli errori causati da errori "429 troppe richieste" nei cluster Microsoft servizio Azure Kubernetes (o cluster che usano un'altra implementazione di Kubernetes in Azure).

Sintomi

Vengono visualizzati errori simili al testo seguente:

Il servizio ha restituito un errore.

Stato=429

Code="OperationNotAllowed"

Message="Il server ha rifiutato la richiesta perché sono state ricevute troppe richieste per questa sottoscrizione".

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: volumi di chiamate eccessivi causano la limitazione della sottoscrizione da parte di Azure

Un cluster Kubernetes in Azure (con o senza servizio Azure Kubernetes) che esegue un aumento frequente o una riduzione delle prestazioni o usa il ridimensionamento automatico del cluster può causare un volume elevato di chiamate HTTP. Questo volume di chiamata può causare un errore, perché supera la quota assegnata per la sottoscrizione di Azure.

Per altre informazioni su questi errori, vedere Limitazione delle richieste di Azure Resource Manager e Risoluzione degli errori di limitazione delle richieste dell'API. Per informazioni su come analizzare e identificare la causa di questi errori e ottenere consigli per risolverli, vedere Analizzare e identificare gli errori usando diagnostica e risoluzione dei problemi del servizio Azure Kubernetes.

Soluzione 1: Eseguire l'aggiornamento a una versione successiva di Kubernetes

Eseguire Kubernetes 1.18.x o versione successiva. Queste versioni contengono molti miglioramenti descritti in Errori di limitazione del servizio Azure Kubernetes/429 e Supporto di cluster di grandi dimensioni senza limitazioni. Tuttavia, se viene ancora visualizzata la limitazione (a causa del carico effettivo o del numero di client nella sottoscrizione), è possibile provare le soluzioni seguenti.

Soluzione 2: Aumentare l'intervallo di analisi del ridimensionamento automatico

Se si rileva che la limitazione della limitazione del ridimensionamento automatico del cluster è stata rilevata, è possibile provare ad aumentare l'intervallo di analisi del ridimensionamento automatico del cluster per ridurre il numero di chiamate ai set di scalabilità di macchine virtuali (VMSS) dal ridimensionamento automatico del cluster.

Soluzione 3: Riconfigurare le applicazioni di terze parti per effettuare meno chiamate

Quando si filtrano in base agli agenti utente nella diagnostica "Visualizzare la frequenza delle richieste e i dettagli della limitazione", se si trovano applicazioni di terze parti (ad esempio le applicazioni di monitoraggio) che effettuano un numero eccessivo di richieste GET, modificare le impostazioni di queste applicazioni per ridurre la frequenza delle chiamate GET. Assicurarsi inoltre che i client dell'applicazione usino backoff esponenziale quando si chiamano le API di Azure.

Soluzione 4: Suddividere i cluster in sottoscrizioni o aree diverse

Se sono presenti numerosi cluster e pool di nodi che usano set di scalabilità di macchine virtuali, provare a suddividere i cluster in sottoscrizioni o aree diverse (all'interno della stessa sottoscrizione). La maggior parte dei limiti dell'API di Azure sono limiti condivisi a livello di area della sottoscrizione. Ad esempio, tutti i cluster e i client all'interno di sub uno e l'area Stati Uniti orientali condividono un limite per l'API GET dei set di scalabilità di macchine virtuali. Di conseguenza, è possibile spostare o ridimensionare nuovi cluster del servizio Azure Kubernetes in una nuova area e sbloccarli nella limitazione delle richieste dell'API di Azure. Questa tecnica è utile se si prevede che i cluster abbiano un'attività elevata, ad esempio se si dispone di un'utilità di scalabilità automatica del cluster attiva. Aiuta anche se hai molti clienti (ad esempio Rancher, Terraform e così via). Poiché tutti i cluster sono diversi nell'elasticità e nel numero di client che eseguono il polling delle API di Azure, non esistono linee guida generiche sul numero di cluster che è possibile eseguire per ogni livello di area di sottoscrizione. Per indicazioni specifiche, è possibile creare un ticket di supporto.

Analizzare e identificare gli errori usando diagnostica e risoluzione dei problemi del servizio Azure Kubernetes

Per un cluster del servizio Azure Kubernetes, è possibile usare diagnostica e risoluzione dei problemi del servizio Azure Kubernetes per analizzare e identificare la causa di questi errori e ottenere consigli per risolverli. Passare al cluster nella portale di Azure e selezionare Diagnostica e risoluzione dei problemi nel riquadro di spostamento a sinistra per aprire diagnostica e risoluzione dei problemi del servizio Azure Kubernetes. Cercare e aprire la limitazione delle richieste di risorse di Azure, in cui è possibile ottenere un report con una serie di diagnostica. Tali diagnostica possono indicare se il cluster ha riscontrato una limitazione della frequenza delle richieste (429 risposte) di Azure Resource Manager (ARM) o del provider di risorse (RP) e da dove proviene la limitazione. Ad esempio:

  • È stata rilevata la limitazione della frequenza delle richieste per il cluster: questa diagnostica fornisce alcune raccomandazioni generali se la limitazione è stata rilevata nel cluster del servizio Azure Kubernetes corrente.

  • È stata rilevata la limitazione della scalabilità automatica del cluster: questa diagnostica viene visualizzata se la limitazione è stata rilevata e ha avuto origine dal ridimensionamento automatico del cluster.

    Per ridurre il volume di richieste dal componente di scalabilità automatica del cluster, usare i metodi seguenti:

    • Aumentare l'intervallo di analisi del ridimensionamento automatico per ridurre il numero di chiamate dal ridimensionamento automatico del cluster ai set di scalabilità di macchine virtuali. Questo metodo può avere un impatto negativo sulla latenza sul tempo impiegato per aumentare le prestazioni perché il ridimensionamento automatico del cluster attende più tempo prima di chiamare il provider di risorse di calcolo di Azure per una nuova macchina virtuale.
    • Assicurarsi che il cluster sia in una versione minima di Kubernetes 1.18. Kubernetes versione 1.18 e versioni successive gestiscono meglio il backoff della frequenza delle richieste quando vengono ricevute risposte di limitazione 429. È consigliabile rimanere all'interno delle versioni di Kubernetes supportate per ricevere patch di sicurezza.
  • Limitazione - Azure Resource Manager: questa diagnostica mostra il numero di richieste limitate nell'intervallo di tempo specificato nel cluster del servizio Azure Kubernetes.

  • Frequenza delle richieste - Azure Resource Manager: questa diagnostica mostra il numero totale di richieste nell'intervallo di tempo specificato nel cluster del servizio Azure Kubernetes.

  • Visualizzare i dettagli relativi alla frequenza delle richieste e alla limitazione: questa diagnostica include più diagrammi per determinare i dettagli della limitazione, incluse le richieste limitate e le richieste totali. È anche possibile filtrare i risultati usando le dimensioni seguenti:

    • Host: host in cui sono state rilevate risposte di stato HTTP 429. Le limitazioni di Azure Resource Manager provengono da management.azure.com; qualsiasi altra cosa è un provider di risorse di livello inferiore.
    • Agente utente: richieste con un agente utente specificato limitato.
    • Operazione: operazioni in cui sono state rilevate risposte http di stato 429.
    • IP client: indirizzo IP client che ha inviato le richieste limitate.

La limitazione delle richieste può essere causata da una combinazione di qualsiasi cluster in questa sottoscrizione, non solo dalla frequenza delle richieste per questo cluster.

Esempio 1: Limitazione del ridimensionamento automatico del cluster

Questo esempio riguarda l'analisi della limitazione causata dal ridimensionamento automatico del cluster.

Se si rileva che la limitazione della scalabilità automatica del cluster è stata rilevata nella diagnostica del servizio Azure Kubernetes e si risolve i problemi>noti, la disponibilità e la limitazione delle richieste di risorse di Azure per le prestazioni>, indica che le richieste rilasciate dal servizio di scalabilità automatica del cluster sono state limitate.

Diagramma che mostra che viene rilevata la limitazione delle richieste di scalabilità automatica del cluster.

È possibile trovare il numero di richieste limitate e quando le richieste vengono limitate nella diagnostica Limitazione - Azure Resource Manager .

Diagramma che mostra quando le richieste di scalabilità automatica del cluster sono limitate.

È possibile trovare il numero di tutte le richieste ARM nello stesso periodo di tempo.

Diagramma di tutte le richieste ARM.

È possibile controllare la diagnostica Visualizza frequenza richieste e dettagli della limitazione per trovare i dettagli della limitazione. Selezionare 429s by User Agent (429s by User Agent ) nell'elenco a discesa Select filter (Seleziona filtro ) e si noterà che le richieste di scalabilità automatica vengono limitate dalle 15:00 alle 16:00.

Diagramma delle limitazioni da parte degli agenti utente.

È anche possibile trovare il numero totale di richieste limitate per il ridimensionamento automatico del cluster e altri agenti utente.

Diagramma delle limitazioni totali per agente utente.

È anche possibile filtrare le limitazioni in base alle operazioni. L'operazione di eliminazione della macchina virtuale del set di scalabilità di macchine virtuali è limitata in questo caso.

Diagramma delle limitazioni in base alle operazioni.

È possibile trovare il numero di richieste limitate e tutte le richieste raggruppate per operazioni.

Diagramma delle limitazioni totali in base alle operazioni.

È quindi possibile seguire i suggerimenti nell'azione consigliata per ridurre le limitazioni.

Il diagramma mostra che viene rilevata la limitazione delle richieste di scalabilità automatica del cluster.

Esempio 2: limitazione del provider di servizi cloud

Questo esempio riguarda le limitazioni causate dal provider di servizi cloud. Spesso si verifica quando le risorse operative in cluster di dimensioni maggiori, ad esempio il provisioning di un'istanza di Azure Load Balancer in un cluster con più di 500 nodi.

Se si trova la limitazione nel cluster, è possibile visualizzare i dettagli della limitazione nella diagnostica Visualizzare la frequenza delle richieste e limitare i dettagli . Selezionare 429s by User Agent (429s by User Agent ) nell'elenco a discesa Select filter (Seleziona filtro ) e si noterà che le richieste del provider di servizi cloud sono state limitate dalle 03:00 alle 06:00.

Diagramma che mostra che viene rilevata la limitazione.

Diagramma delle limitazioni in base all'agente utente.

È anche possibile filtrare in base alle operazioni per scoprire che l'operazione limitata è "Network/loadBalancers/read".

Diagramma delle limitazioni in base all'operazione.

È possibile usare la funzionalità di anteprima del servizio Azure Kubernetes Load Balancer basato su IP del nodo per ridurre questa limitazione.

Contattaci per ricevere assistenza

In caso di domande o bisogno di assistenza, creare una richiesta di supporto tecnico oppure formula una domanda nel Supporto della community di Azure. È possibile anche inviare un feedback sul prodotto al feedback della community di Azure.