Fehler "429: Zu viele Anforderungen"
In diesem Artikel wird erläutert, wie Sie Fehler beheben, die durch Fehler vom Typ "429 Too Many Requests" in Ihren Microsoft Azure Kubernetes Service-Clustern (oder Clustern, die eine andere Kubernetes-Implementierung in Azure verwenden) verursacht werden.
Problembeschreibung
Sie erhalten Fehler, die dem folgenden Text ähneln:
Der Dienst hat einen Fehler zurückgegeben.
Status=429
Code="OperationNotAllowed"
Message="Der Server hat die Anforderung abgelehnt, weil zu viele Anforderungen für dieses Abonnement empfangen wurden."
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"}"}
Ursache: Übermäßige Anrufvolumen führen dazu, dass Azure Ihr Abonnement drosselt.
Ein Kubernetes-Cluster in Azure (mit oder ohne AKS), der häufig hoch- oder herunterskaliert oder die automatische Clusterskalierung verwendet, kann zu einer großen Menge von HTTP-Aufrufen führen. Dieses Aufrufvolumen kann zu einem Fehler führen, da es das zugewiesene Kontingent für Ihr Azure-Abonnement überschreitet.
Weitere Informationen zu diesen Fehlern finden Sie unter Drosselung von Azure Resource Manager-Anforderungen und Problembehandlung bei API-Drosselungsfehlern. Informationen zum Analysieren und Identifizieren der Ursache dieser Fehler und zum Abrufen von Empfehlungen zu deren Behebung finden Sie unter Analysieren und Identifizieren von Fehlern mithilfe von AKS– Diagnose und Problembehandlung.
Lösung 1: Upgrade auf eine höhere Version von Kubernetes
Führen Sie Kubernetes 1.18 aus. x oder höher. Diese Versionen enthalten viele Verbesserungen, die unter AKS-Drosselung/429-Fehler und Unterstützung großer Cluster ohne Drosselung beschrieben werden. Wenn jedoch weiterhin eine Drosselung angezeigt wird (aufgrund der tatsächlichen Auslastung oder Anzahl der Clients im Abonnement), können Sie die folgenden Lösungen ausprobieren.
Lösung 2: Erhöhen des Scanintervalls für die automatische Skalierung
Wenn Sie feststellen, dass die Diagnoseberichte "Cluster auto-scaler Drosselung wurde erkannt" Drosselung durch die automatische Clusterskalierung feststellen, können Sie versuchen, das Scanintervall für die automatische Skalierung zu erhöhen, um die Anzahl der Aufrufe von VM-Skalierungsgruppen (VMSS) von der automatischen Clusterskalierung zu reduzieren.
Lösung 3: Neukonfigurieren von Drittanbieteranwendungen, um weniger Anrufe zu tätigen
Wenn Sie in der Diagnose "Anzeigen der Anforderungsrate und Drosselungsdetails" nach Benutzer-Agents filtern, ändern Sie die Einstellungen dieser Anwendungen, um die Häufigkeit der GET-Aufrufe zu verringern, wenn Sie Anwendungen von Drittanbietern (z. B. Überwachungsanwendungen) finden, die eine übermäßige Anzahl von GET-Anforderungen ausführen. Stellen Sie außerdem sicher, dass die Anwendungsclients beim Aufrufen von Azure-APIs exponentielles Backoff verwenden.
Lösung 4: Aufteilen Ihrer Cluster in verschiedene Abonnements oder Regionen
Wenn es zahlreiche Cluster und Knotenpools gibt, die VM-Skalierungsgruppen verwenden, versuchen Sie, die Cluster in verschiedene Abonnements oder Regionen (innerhalb desselben Abonnements) aufzuteilen. Die meisten Azure-API-Grenzwerte sind freigegebene Grenzwerte auf Abonnementregionsebene. Beispielsweise gilt für alle Cluster und Clients innerhalb von Teil 1 und der Region "USA, Osten" ein Grenzwert für die GET-API der VM-Skalierungsgruppen. Daher können Sie neue AKS-Cluster in einer neuen Region verschieben oder skalieren und die Blockierung der Azure-API-Drosselung aufheben. Dieses Verfahren ist hilfreich, wenn Sie erwarten, dass die Cluster eine hohe Aktivität aufweisen (z. B. wenn Sie über eine aktive automatische Clusterskalierung verfügen). Es ist auch hilfreich, wenn Sie viele Kunden haben (z. B. Rancher, Terraform usw.). Da sich alle Cluster in ihrer Elastizität und der Anzahl der Clients, die Azure-APIs abrufen, unterscheiden, gibt es keine generischen Richtlinien für die Anzahl von Clustern, die Pro Abonnementregionsebene ausgeführt werden können. Für spezifische Anleitungen können Sie ein Supportticket erstellen.
Analysieren und Identifizieren von Fehlern mithilfe von AKS– Diagnose und Problembehandlung
Für einen AKS-Cluster können Sie AKS Diagnose and Solve Problems verwenden, um die Ursache dieser Fehler zu analysieren und zu identifizieren und Empfehlungen zu deren Behebung zu erhalten. Navigieren Sie im Azure-Portal zu Ihrem Cluster, und wählen Sie im linken Navigationsbereich Diagnose und Problembehandlung aus, um AKS Diagnose und Problembehandlung zu öffnen. Search und öffnen Sie die Azure-Ressourcenanforderungsdrosselung, in der Sie einen Bericht mit einer Reihe von Diagnose abrufen können. Diese Diagnose können anzeigen, ob für den Cluster eine Anforderungsratedrosselung (429 Antworten) von Azure Resource Manager (ARM) oder Ressourcenanbieter (RP) aufgetreten ist und woher die Drosselung stammt. Zum Beispiel:
Anforderungsratendrosselung für Ihren Cluster erkannt: Diese Diagnose enthält einige allgemeine Empfehlungen, wenn eine Drosselung im aktuellen AKS-Cluster erkannt wurde.
Die Drosselung der automatischen Skalierung von Clustern wurde erkannt: Diese Diagnose wird angezeigt, wenn eine Drosselung erkannt wurde und von der automatischen Clusterskalierung stammt.
Verwenden Sie die folgenden Methoden, um die Menge der Anforderungen von der automatischen Clusterskalierung zu reduzieren:
- Erhöhen Sie das Scanintervall für die automatische Skalierung, um die Anzahl der Aufrufe von der automatischen Clusterskalierung an VM-Skalierungsgruppen zu reduzieren. Diese Methode hat möglicherweise negative Auswirkungen auf die Zeit, die für das Hochskalieren benötigt wird, da die automatische Clusterskalierung länger wartet, bevor Azure Compute Resource Provider (CRP) für einen neuen virtuellen Computer aufgerufen wird.
- Stellen Sie sicher, dass für den Cluster eine Kubernetes-Mindestversion von 1.18 verwendet wird. Kubernetes Version 1.18 und höhere Versionen behandeln das Backoff der Anforderungsrate besser, wenn 429-Drosselungsantworten empfangen werden. Es wird dringend empfohlen, innerhalb der unterstützten Kubernetes-Versionen zu bleiben, um Sicherheitspatches zu erhalten.
Drosselung – Azure Resource Manager: Diese Diagnose zeigt die Anzahl der gedrosselten Anforderungen im angegebenen Zeitbereich im AKS-Cluster an.
Anforderungsrate – Azure Resource Manager: Diese Diagnose zeigt die Gesamtanzahl der Anforderungen im angegebenen Zeitraum im AKS-Cluster an.
Anzeigen der Anforderungsrate und Drosselungsdetails: Diese Diagnose enthält mehrere Diagramme, um die Drosselungsdetails zu bestimmen, einschließlich gedrosselter Anforderungen und Gesamtanforderungen. Sie können die Ergebnisse auch mithilfe der folgenden Dimensionen filtern:
- Host: Der Host, auf dem HTTP-status 429-Antworten erkannt wurden. Azure Resource Manager Drosselungen stammen von
management.azure.com
. Alles andere ist ein Ressourcenanbieter auf niedrigerer Ebene. - Benutzer-Agent: Anforderungen mit einem angegebenen Benutzer-Agent, die gedrosselt wurden.
- Vorgang: Vorgänge, bei denen HTTP-status 429-Antworten erkannt wurden.
- Client-IP: Die Client-IP-Adresse, die die gedrosselten Anforderungen gesendet hat.
- Host: Der Host, auf dem HTTP-status 429-Antworten erkannt wurden. Azure Resource Manager Drosselungen stammen von
Die Anforderungsdrosselung kann durch eine Kombination eines beliebigen Clusters in diesem Abonnement verursacht werden, nicht nur durch die Anforderungsrate für diesen Cluster.
Beispiel 1: Drosselung der automatischen Clusterskalierung
In diesem Beispiel geht es um die Analyse der Drosselung, die durch die automatische Clusterskalierung verursacht wird.
Wenn Sie feststellen, dass die Diagnose " Cluster auto-scaler Drosselung " unter AKS Diagnose and Solve Problems>Known Issues, Availability and Performance>Azure Resource Request Throttling erkannt wurde, weist dies darauf hin, dass anforderungen, die von der automatischen Clusterskalierung ausgegeben wurden, gedrosselt wurden.
Sie finden die Anzahl der gedrosselten Anforderungen und den Zeitpunkt, zu dem die Anforderungen gedrosselt werden, in der Diagnose Drosselung – Azure Resource Manager.
Sie können die Anzahl aller ARM-Anforderungen im gleichen Zeitraum ermitteln.
Sie können die Diagnose Anforderungsrate anzeigen und Drosselungsdetails anzeigen überprüfen, um die Drosselungsdetails zu ermitteln. Wählen Sie 429s nach Benutzer-Agent aus der Dropdownliste Filter auswählen aus, und Sie können sehen, dass Anforderungen für die automatische Skalierung von 15:00 bis 16:00 Uhr gedrosselt werden.
Sie können auch die Gesamtzahl der gedrosselten Anforderungen für die automatische Clusterskalierung und andere Benutzer-Agents ermitteln.
Sie können Drosselungen auch nach Vorgängen filtern. Der VMSS-Löschvorgang wird in diesem Fall gedrosselt.
Sie finden die Anzahl der gedrosselten Anforderungen und alle Anforderungen, die nach Vorgängen gruppiert sind.
Dann können Sie den Vorschlägen in der empfohlenen Aktion folgen, um die Drosselungen zu reduzieren.
Beispiel 2: Drosselung des Cloudanbieters
In diesem Beispiel geht es um die Drosselungen, die durch den Cloudanbieter verursacht werden. Dies geschieht häufig beim Betrieb von Ressourcen in größeren Clustern, z. B. beim Bereitstellen einer Azure Load Balancer in einem Cluster mit mehr als 500 Knoten.
Wenn Sie eine Drosselung in Ihrem Cluster feststellen, können Sie die Drosselungsdetails in der Diagnose Anzeigen der Anforderungsrate und Drosselungsdetails anzeigen. Wählen Sie 429s by User Agent aus der Dropdownliste Filter auswählen aus, und Sie können sehen, dass Cloudanbieteranforderungen von 03:00 bis 06:00 Gedrosselt wurden.
Sie können auch nach Vorgängen filtern, um festzustellen, dass der gedrosselte Vorgang "Network/loadBalancers/read" lautet.
Sie können das AKS-Vorschaufeature Node IP-basierte Load Balancer verwenden, um diese Drosselung zu reduzieren.
Kontaktieren Sie uns für Hilfe
Wenn Sie Fragen haben oder Hilfe mit Ihren Azure-Gutschriften benötigen, dann erstellen Sie beim Azure-Support eine Support-Anforderung oder fragen Sie den Azure Community-Support. Sie können auch Produktfeedback an die Azure Feedback Community senden.