429 Zu viele Anforderungen
In diesem Artikel wird erläutert, wie Fehler behoben werden, die durch Fehler "429 Zu viele Anforderungen" in Ihren Microsoft Azure Kubernetes Service (AKS)-Clustern (oder Clustern, die eine andere Kubernetes-Implementierung in Azure verwenden) verursacht werden.
Symptome
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, da 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 Anrufvolumes führen dazu, dass Azure Ihr Abonnement drosselt
Ein Kubernetes-Cluster in Azure (mit oder ohne AKS), der eine häufige Skalierung nach oben oder nach unten ausführt oder die Automatische Skalierung des Clusters verwendet, kann zu einem großen Volumen von HTTP-Aufrufen führen. Dieses Anrufvolumen 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-Einschränkungsfehlern. Informationen zum Analysieren und Identifizieren der Ursache dieser Fehler und zum Abrufen von Empfehlungen zur Behebung dieser Fehler finden Sie unter Analysieren und Identifizieren von Fehlern mithilfe von AKS Diagnose und Lösung von Problemen.
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 in AKS-Drosselung/429-Fehlern beschrieben werden und große Cluster ohne Einschränkung unterstützen. Wenn jedoch weiterhin 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 AutoScaler-Scanintervalls
Wenn Sie feststellen, dass die Drosselung von Clustern für die automatische Skalierung erkannt wurde" diagnoseberichte , die durch die Cluster-Autoscaler verursacht werden, können Sie versuchen, das AutoScaler-Scanintervall zu erhöhen, um die Anzahl der Aufrufe an VM-Skalierungsgruppen (VMSS) aus der Clusterautoskalierung zu verringern.
Lösung 3: Konfigurieren Sie Anwendungen von Drittanbietern neu, um weniger Anrufe zu tätigen.
Wenn Sie nach Benutzer-Agents in der Diagnose "Anforderungsrate und Drosselungsdetails anzeigen" 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 vornehmen. Stellen Sie außerdem sicher, dass die Anwendungsclients beim Aufrufen von Azure-APIs exponentielle Backoffs verwenden.
Lösung 4: Aufteilen Ihrer Cluster in verschiedene Abonnements oder Regionen
Wenn es zahlreiche Cluster und Knotenpools gibt, die Skalierungssätze für virtuelle Computer verwenden, versuchen Sie, die Cluster in verschiedene Abonnements oder Regionen (innerhalb desselben Abonnements) aufzuteilen. Die meisten Azure-API-Grenzwerte sind gemeinsame Grenzwerte auf Abonnement-Region-Ebene. Beispielsweise teilen alle Cluster und Clients innerhalb von Teil 1 und der Region Ost-USA einen Grenzwert für die SKALIERUNGs-API für virtuelle Computer. Daher können Sie neue AKS-Cluster in einer neuen Region verschieben oder skalieren und für die Azure-API-Drosselung entsperrt werden. Diese Technik hilft, wenn Sie erwarten, dass die Cluster eine hohe Aktivität aufweisen (z. B. wenn Sie über eine aktive Cluster-Autoskaler verfügen). Es hilft auch, wenn Sie viele Kunden haben (z. B. Rancher, Terraform usw.). Da sich alle Cluster in ihrer Flexibilität und der Anzahl der Clients unterscheiden, die Azure-APIs abfragen, gibt es keine allgemeinen Richtlinien für die Anzahl der Cluster, die Sie pro Abonnementregionsebene ausführen können. Für spezifische Anleitungen können Sie ein Supportticket erstellen.
Analysieren und Identifizieren von Fehlern mithilfe von AKS Diagnose und Lösung von Problemen
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 erhalten, um sie zu beheben. Navigieren Sie im Azure-Portal zu Ihrem Cluster, und wählen Sie "Diagnostizieren und Lösen von Problemen" in der linken Navigation aus, um AKS Diagnose und Lösung von Problemen zu öffnen. Suchen und öffnen Sie die Azure Resource Request Drosselung, in der Sie einen Bericht mit einer Reihe von Diagnosen abrufen können. Diese Diagnosen können anzeigen, ob der Cluster eine Anforderungsrateinschränkung (429 Antworten) von Azure Resource Manager (ARM) oder Ressourcenanbieter (RP) und woher die Drosselung kommt. Zum Beispiel:
Anforderungsrateneinschränkung wurde für Ihren Cluster erkannt: Diese Diagnose enthält einige allgemeine Empfehlungen, wenn Drosselung im aktuellen AKS-Cluster erkannt wurde.
Die Auto-Scaler-Einschränkung des Clusters wurde erkannt: Diese Diagnose zeigt an, ob Drosselung erkannt und von der Cluster-Autoskalierung stammt.
Verwenden Sie die folgenden Methoden, um das Volumen der Anforderungen aus der Clusterautoskalierung zu reduzieren:
- Erhöhen Sie das AutoScaler-Scanintervall, um die Anzahl der Aufrufe von der Cluster-Autoskalierung auf Skalierungsgruppen für virtuelle Computer zu reduzieren. Diese Methode wirkt sich möglicherweise negativ auf die zeitaufwendige Skalierung aus, da die Cluster-Autoskalierung länger wartet, bevor Azure Compute Resource Provider (CRP) für einen neuen virtuellen Computer aufgerufen wird.
- Stellen Sie sicher, dass sich der Cluster auf einer Kubernetes-Mindestversion von 1.18 befindet. Kubernetes, Version 1.18 und höhere Versionen, behandeln die Anforderungsratenrücksetzung besser, wenn 429 Drosselungsantworten empfangen werden. Es wird dringend empfohlen, in unterstützten Kubernetes-Versionen zu bleiben, um Sicherheitspatches zu erhalten.
Drosselung – Azure Resource Manager: Diese Diagnose zeigt die Anzahl der gedrosselten Anforderungen im angegebenen Zeitraum 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 verfügt über mehrere Diagramme, um die Drosselungsdetails zu ermitteln, einschließlich gedrosselter Anforderungen und gesamter Anforderungen. 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 mit niedrigerer Ebene. - Benutzer-Agent: Anforderungen mit einem angegebenen Benutzer-Agent, der gedrosselt wurde.
- 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 aus einem beliebigen Cluster in diesem Abonnement verursacht werden, nicht nur durch die Anforderungsrate für diesen Cluster.
Beispiel 1: Drosselung des automatischen Skalierungsclusters
In diesem Beispiel geht es um die Analyse der Drosselung, die durch die Automatische Skalierung des Clusters verursacht wird.
Wenn Sie feststellen, dass die Auto-Skalierungsdrosselung des Clusters in AKS Diagnose und Lösung>bekannter Probleme, Verfügbarkeit und Leistungseinschränkung>für Azure-Ressourcenanforderung erkannt wurde, gibt es Anforderungen an, die vom Cluster-Autoscaler ausgegeben wurden.
Sie finden die Anzahl der gedrosselten Anforderungen und wenn die Anforderungen in der Drosselung gedrosselt werden – Azure Resource Manager-Diagnose .
Sie finden die Anzahl aller ARM-Anforderungen im gleichen Zeitraum.
Sie können die Diagnose der Ansichtsanforderungsrate und die Drosselungsdetails überprüfen, um die Drosselungsdetails zu finden. Wählen Sie 429s nach Benutzer-Agent aus der Dropdownliste "Filter auswählen" aus, und Sie können sehen, dass Autoscaler-Anforderungen von 15:00 bis 16:00 gedrosselt werden.
Sie können auch die Gesamtanzahl der gedrosselten Anforderungen für die Cluster-Autoskaler und andere Benutzer-Agents finden.
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 nach Vorgängen gruppierten Anforderungen.
Anschließend können Sie den Vorschlägen in der empfohlenen Aktion folgen, um die Drosselungen zu reduzieren.
Beispiel 2: Drosselung von Cloudanbietern
In diesem Beispiel geht es um die Drosselungen, die durch den Cloudanbieter verursacht werden. Dies geschieht häufig, wenn Ressourcen in größeren Clustern ausgeführt werden, z. B. die Bereitstellung eines Azure Load Balancer in einem Cluster mit mehr als 500 Knoten.
Wenn Sie eine Drosselung in Ihrem Cluster finden, können Sie die Drosselungsdetails in der Diagnosediagnose " Anforderungsrate anzeigen" und "Drosselungsdetails " anzeigen. Wählen Sie in der Dropdownliste "Filter auswählen" 429 von Benutzer-Agent 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 herauszufinden, dass der gedrosselte Vorgang "Network/loadBalancers/read" lautet.
Sie können das AKS Preview-Feature Node IP-basiertes Lastenausgleichsmodul 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.