Dela via


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

Den här artikeln beskriver hur du felsöker fel som orsakas av "429 för många begäranden"-fel på dina Aks-kluster (Microsoft Azure Kubernetes Service) (eller kluster som använder en annan Kubernetes-implementering i 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 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 Diagnostisera 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 automatisk skalning av kluster har identifierats för diagnostikrapporter som orsakas av autoskalning av kluster kan du försöka öka genomsökningsintervallet för autoskalning för att minska antalet anrop till VMSS -skalningsuppsättningar (VMSS) från klustrets autoskalning.

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. Kontrollera dessutom 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å prenumerationsregionsnivå. 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 klienter (till exempel Rancher, Terraform och så vidare). Eftersom alla kluster skiljer sig åt i sin elasticitet och antalet klienter som söker efter Azure-API:er finns det inga allmänna riktlinjer för antalet kluster som du kan köra per prenumerationsregionsnivå. 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 Diagnostisera 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önstret för att öppna AKS Diagnostisera och lösa problem. Search 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 haft någon begränsning av begärandefrekvens (429 svar) för Azure Resource Manager (ARM) eller resursprovider (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 kluster.

    Använd följande metoder för att minska mängden begäranden från autoskalning av kluster:

    • Öka genomsökningsintervallet för autoskalning för att minska antalet anrop från autoskalning av kluster 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 kluster väntar längre innan du anropar Azure Compute Resource Provider (CRP) för en ny virtuell dator.
    • Kontrollera att klustret har minst Kubernetes version 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 resultaten 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 autoskalning av kluster.

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

Diagram som visar begränsning av begäranden om automatisk skalning av kluster 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 , så kan du se att autoskalningsbegäranden begränsas från 15:00 till 16:00.

Diagram över begränsningar av 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 efter å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 begäranden om automatisk skalning av kluster identifieras.

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 fler ä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 , så kan du 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 efter 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örhandsgranskningsfunktionen Node IP-baserad Load Balancer 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.