Dela via


429 Fel med för många begäranden

I den här artikeln beskrivs hur du felsöker fel som orsakas av "429 för många begäranden"-fel i dina AKS-kluster (Microsoft Azure Kubernetes Service) (eller kluster som använder en annan Kubernetes-implementering på Azure).

Symptom

Du får fel som liknar följande text:

Tjänsten returnerade ett fel.

Status=429

Code="OperationNotAllowed"

Message="Servern avvisade begäran eftersom för många begäranden har tagits emot för den här prenumerationen."

Details=[{
"code":"TooManyRequests",
"meddelande":"{
\"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"}"}

Orsak: Stora samtalsvolymer gör att Azure begränsar din prenumeration

Ett Kubernetes-kluster i Azure (med eller utan AKS) som ofta skalas upp eller skalas ned, eller använder autoskalning av kluster, kan orsaka en stor mängd HTTP-anrop. Den här anropsvolymen kan leda till fel eftersom den överskrider den tilldelade kvoten för din Azure-prenumeration.

Mer information om dessa fel finns i Begränsa Azure Resource Manager-begäranden och Felsöka API-begränsningsfel. Information om hur du analyserar och identifierar orsaken till dessa fel och får rekommendationer för att lösa dem finns i Analysera och identifiera fel med hjälp av AKS-diagnostik och lösa problem.

Lösning 1: Uppgradera till en senare version av Kubernetes

Kör Kubernetes 1.18.x eller senare. Dessa versioner innehåller många förbättringar som beskrivs i AKS-begränsning/429-fel och Stöd för stora kluster utan begränsning. Men om du fortfarande ser begränsningar (på grund av den faktiska belastningen eller antalet klienter i prenumerationen) kan du prova följande lösningar.

Lösning 2: Öka genomsökningsintervallet för autoskalning

Om du upptäcker att begränsningen för autoskalning av kluster har identifierats, kan du försöka öka genomsökningsintervallet för autoskalning för att minska antalet anrop till VMSS (VmSS) från autoskalning av virtuella datorer.

Lösning 3: Konfigurera om program från tredje part för att göra färre anrop

När du filtrerar efter användaragenter i diagnostiken "Visa begärandefrekvens och begränsningsinformation" ändrar du inställningarna för dessa program för att minska frekvensen för GET-anropen om du hittar program från tredje part (till exempel övervakningsprogram) som gör ett överdrivet antal GET-begäranden. Se dessutom till att programklienterna använder exponentiell backoff när de anropar Azure-API:er.

Lösning 4: Dela upp dina kluster i olika prenumerationer eller regioner

Om det finns många kluster och nodpooler som använder VM-skalningsuppsättningar kan du försöka dela upp klustren i olika prenumerationer eller regioner (inom samma prenumeration). De flesta Azure API-gränser är delade gränser på prenumerationsregionnivå. Till exempel delar alla kluster och klienter inom under ett och regionen USA, östra en gräns för GET-API:et för vm-skalningsuppsättningar. Därför kan du flytta eller skala nya AKS-kluster i en ny region och avblockera Azure API-begränsningen. Den här tekniken hjälper dig om du förväntar dig att klustren ska ha hög aktivitet (till exempel om du har en aktiv autoskalning av kluster). Det hjälper också om du har många kunder (till exempel Rancher, Terraform och så vidare). Eftersom alla kluster skiljer sig åt i elasticiteten och antalet klienter som söker efter Azure-API:er finns det inga allmänna riktlinjer för hur många kluster du kan köra per prenumerationsregionnivå. För specifik vägledning kan du skapa en supportbegäran.

Analysera och identifiera fel med hjälp av AKS Diagnostisera och lösa problem

För ett AKS-kluster kan du använda AKS-diagnostik och lösa problem för att analysera och identifiera orsaken till dessa fel och få rekommendationer för att lösa dem. Gå till klustret i Azure Portal och välj Diagnostisera och lösa problem i det vänstra navigeringsfältet för att öppna AKS-diagnostisering och lösa problem. Sök och öppna Azure Resource Request Throttling, där du kan hämta en rapport med en serie diagnostik. Den här diagnostiken kan visa om klustret har upplevt någon begränsning av begärandefrekvens (429 svar) för Azure Resource Manager (ARM) eller resursprovidern (RP) och var begränsningen kommer ifrån. Till exempel:

  • Begränsning av begärandefrekvens har identifierats för klustret: Den här diagnostiken ger några allmänna rekommendationer om begränsning har identifierats i det aktuella AKS-klustret.

  • Begränsning av automatisk skalning av kluster har identifierats: Den här diagnostiken visas om begränsning har identifierats och kommer från autoskalning av klustret.

    Om du vill minska mängden begäranden från autoskalning av kluster använder du följande metoder:

    • Öka genomsökningsintervallet för autoskalning för att minska antalet anrop från klustrets autoskalning till VM-skalningsuppsättningar. Den här metoden kan ha en negativ svarstidspåverkan på den tid det tar att skala upp eftersom autoskalning av klustret väntar längre innan du anropar Azure Compute Resource Provider (CRP) för en ny virtuell dator.
    • Kontrollera att klustret har en kubernetes-version av minst 1.18. Kubernetes version 1.18 och senare versioner hanterar backoff för begärandefrekvens bättre när 429 begränsningssvar tas emot. Vi rekommenderar starkt att du håller dig inom kubernetes-versioner som stöds för att få säkerhetskorrigeringar.
  • Begränsning – Azure Resource Manager: Den här diagnostiken visar antalet begränsade begäranden i det angivna tidsintervallet i AKS-klustret.

  • Begärandefrekvens – Azure Resource Manager: Den här diagnostiken visar det totala antalet begäranden i det angivna tidsintervallet i AKS-klustret.

  • Visa information om begärandefrekvens och begränsning: Den här diagnostiken har flera diagram för att fastställa begränsningsinformationen, inklusive begränsade begäranden och totalt antal begäranden. Du kan också filtrera resultatet med hjälp av följande dimensioner:

    • Värd: Värden där HTTP-status 429-svar identifierades. Azure Resource Manager-begränsningar kommer från management.azure.com– allt annat är en resursprovider på lägre nivå.
    • Användaragent: Begäranden med en angiven användaragent som har begränsats.
    • Åtgärd: Åtgärder där HTTP-status 429-svar identifierades.
    • Klient-IP: Klientens IP-adress som skickade de begränsade begärandena.

Begränsning av begäranden kan orsakas av en kombination av alla kluster i den här prenumerationen, inte bara begärandefrekvensen för det här klustret.

Exempel 1: Begränsning av automatisk skalning av kluster

Det här exemplet handlar om att analysera begränsningar som orsakas av klustrets autoskalning.

Om du upptäcker att begränsningen av automatisk skalning av kluster har identifierats i AKS Diagnostisera och lösa problem>med kända problem, tillgänglighet och prestanda>för Azure Resource Request Throttling, anger det att begäranden som utfärdats av klustrets autoskalning har begränsats.

Diagram som visar begränsning av autoskalning av klusterbegäranden har identifierats.

Du hittar antalet begränsade begäranden och när begäranden begränsas i diagnostiken Begränsning – Azure Resource Manager .

Diagram som visar när begäranden om autoskalning av kluster begränsas.

Du hittar antalet arm-begäranden under samma tidsperiod.

Diagram över alla ARM-begäranden.

Du kan kontrollera diagnostiken Visa begärandefrekvens och begränsningsinformation för att hitta begränsningsinformationen. Välj 429:or efter användaragent i listrutan Välj filter och du kan se att autoskalningsbegäranden begränsas från 15:00 till 16:00.

Diagram över begränsningar efter användaragenter.

Du kan också hitta det totala antalet begränsade begäranden för autoskalning av kluster och andra användaragenter.

Diagram över totala begränsningar per användaragent.

Du kan också filtrera begränsningar efter åtgärder. VmSS VM-borttagningsåtgärden begränsas i det här fallet.

Diagram över begränsningar efter åtgärder.

Du hittar antalet begränsade begäranden och alla begäranden grupperade efter åtgärder.

Diagram över totala begränsningar per åtgärder.

Sedan kan du följa förslagen i den rekommenderade åtgärden för att minska begränsningarna.

Diagram som visar att begränsning av autoskalning av klusterbegäranden har identifierats.

Exempel 2: Begränsning av molnleverantör

Det här exemplet handlar om de begränsningar som orsakas av molnleverantören. Det händer ofta när du använder resurser i större kluster, till exempel när du etablerar en Azure Load Balancer i ett kluster som har mer än 500 noder.

Om du hittar begränsningar i klustret kan du se begränsningsinformationen i diagnostiken Visa begärandefrekvens och begränsningsinformation . Välj 429:or efter användaragent i listrutan Välj filter och du kan se att molnleverantörsbegäranden begränsades från 03:00 till 06:00.

Diagram som visar att begränsning har identifierats.

Diagram över begränsningar per användaragent.

Du kan också filtrera efter åtgärder för att ta reda på att den begränsade åtgärden är "Network/loadBalancers/read".

Diagram över begränsningar efter åtgärd.

Du kan använda aks-förhandsversionens funktion Node IP-baserad lastbalanserare för att minska den här begränsningen.

Kontakta oss för att få hjälp

Om du har frågor eller behöver hjälp skapar du en supportförfrågan eller frågar Azure community support. Du kan också skicka produktfeedback till Azure-feedbackcommunityn.