429 Troppi errori di richieste
Questo articolo illustra come risolvere gli errori causati da errori "429 Troppe richieste" nei cluster Microsoft servizio Azure Kubernetes (AKS) o nei 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 frequenti operazioni di aumento o riduzione delle prestazioni o usa il ridimensionatore automatico del cluster può causare un volume elevato di chiamate HTTP. Questo volume di chiamate 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 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 diagnosticare e risolvere i problemi del servizio Azure Kubernetes.
Soluzione 1: eseguire l'aggiornamento a una versione successiva di Kubernetes
Eseguire Kubernetes 1.18. x o versioni successive. Queste versioni contengono molti miglioramenti descritti in Errori di limitazione del servizio Azure Kubernetes/429 e Supportano 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 ridimensionatore automatico
Se viene rilevata la limitazione della scalabilità automatica del cluster, è possibile provare ad aumentare l'intervallo di analisi del ridimensionamento automatico 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 "Visualizza la frequenza delle richieste e i dettagli della limitazione", se si trovano applicazioni di terze parti (ad esempio 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 usno il 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 delle API di Azure sono limiti condivisi a livello di area della sottoscrizione. Ad esempio, tutti i cluster e i client all'interno della sotto-una e dell'area Stati Uniti orientali condividono un limite per l'API GET dei set di scalabilità di macchine virtuali. È quindi possibile spostare o ridimensionare nuovi cluster del servizio Azure Kubernetes in una nuova area e sbloccarli con la limitazione delle API di Azure. Questa tecnica è utile se si prevede che i cluster abbiano un'attività elevata, ad esempio se si dispone di un ridimensionamento automatico del cluster attivo. È utile anche se si hanno molti clienti (ad esempio Rancher, Terraform e così via). Poiché tutti i cluster sono diversi per quanto riguarda l'elasticità e il numero di client che eseguono il polling delle API di Azure, non esistono linee guida generiche sul numero di cluster che è possibile eseguire a livello di area della sottoscrizione. Per indicazioni specifiche, è possibile creare un ticket di supporto.
Analizzare e identificare gli errori usando il servizio Azure Kubernetes Per diagnosticare e risolvere i problemi
Per un cluster del servizio Azure Kubernetes, è possibile usare Diagnosticare e risolvere i problemi del servizio Azure Kubernetes per analizzare e identificare la causa di questi errori e ottenere consigli per risolverli. Passare al cluster nel portale di Azure e selezionare Diagnosticare e risolvere i problemi nel riquadro di spostamento sinistro per aprire Diagnosticare e risolvere i problemi del servizio Azure Kubernetes. Search e aprire La limitazione delle richieste di risorse di Azure, in cui è possibile ottenere un report con una serie di diagnostica. Questa diagnostica può indicare se il cluster ha riscontrato una limitazione della frequenza delle richieste (429 risposte) di Azure Resource Manager (ARM) o 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 è stata rilevata la limitazione 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 originata dalla scalabilità automatica del cluster.
Per ridurre il volume di richieste dal ridimensionatore automatico del cluster, usare i metodi seguenti:
- Aumentare l'intervallo di analisi del ridimensionatore automatico per ridurre il numero di chiamate dal ridimensionatore automatico del cluster ai set di scalabilità di macchine virtuali. Questo metodo può avere un impatto negativo sulla latenza sul tempo impiegato per aumentare il numero di istanze perché il ridimensionamento automatico del cluster attende più a lungo prima di chiamare il provider di risorse di calcolo di Azure (CRP) per una nuova macchina virtuale.
- Verificare che il cluster si trova 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 429 risposte di limitazione. È 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 richieste - Azure Resource Manager: questa diagnostica mostra il numero totale di richieste nell'intervallo di tempo specificato nel cluster del servizio Azure Kubernetes.
Visualizzare la frequenza delle richieste e i dettagli della limitazione: questa diagnostica include più diagrammi per determinare i dettagli di 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 con stato HTTP 429. Azure Resource Manager limitazioni 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 con stato HTTP 429.
- IP client: indirizzo IP client che ha inviato le richieste limitate.
- Host: host in cui sono state rilevate risposte con stato HTTP 429. Azure Resource Manager limitazioni provengono da
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 della scalabilità automatica del cluster
Questo esempio illustra l'analisi della limitazione causata dal ridimensionamento automatico del cluster.
Se è stata rilevata la limitazione automatica delle richieste del cluster in Diagnostica del servizio Azure Kubernetes e risoluzione dei problemi>noti, la limitazione della disponibilità e delle prestazioni> delle richiestedi risorse di Azure indica che le richieste emesse dal ridimensionatore automatico del cluster sono state limitate.
È possibile trovare il numero di richieste limitate e quando le richieste vengono limitate nella diagnostica Throttling - Azure Resource Manager.
È possibile trovare il numero di tutte le richieste ARM nello stesso periodo di tempo.
È possibile controllare la diagnostica Visualizza la frequenza delle richieste e i dettagli di limitazione per trovare i dettagli di limitazione. Selezionare 429s by User Agent (429s by User Agent ) dall'elenco a discesa Seleziona filtro e si può notare che le richieste di scalabilità automatica sono limitate dalle 15:00 alle 16:00.
È anche possibile trovare il numero totale di richieste limitate per il ridimensionatore automatico del cluster e altri agenti utente.
È anche possibile filtrare le limitazioni in base alle operazioni. In questo caso, l'operazione di eliminazione della macchina virtuale VMSS è limitata.
È possibile trovare il numero di richieste limitate e tutte le richieste raggruppate per operazioni.
È quindi possibile seguire i suggerimenti nell'azione consigliata per ridurre le limitazioni.
Esempio 2: limitazione delle richieste del provider cloud
Questo esempio riguarda le limitazioni causate dal provider di servizi cloud. Si verifica spesso quando si gestiscono risorse in cluster di dimensioni maggiori, ad esempio il provisioning di un Azure Load Balancer in un cluster con più di 500 nodi.
Se si trova la limitazione delle richieste nel cluster, è possibile visualizzare i dettagli di 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 Seleziona filtro e si può notare che le richieste del provider di servizi cloud sono state limitate dalle 03:00 alle 06:00.
È anche possibile filtrare in base alle operazioni per scoprire che l'operazione limitata è "Network/loadBalancers/read".
Per ridurre questa limitazione, è possibile usare la funzionalità di anteprima del servizio Azure Kubernetes basata su IP del nodo Load Balancer.
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.