Share via


429 太多要求錯誤

本文討論如何針對在 Azure) 上使用另一個 Kubernetes 實作的 Microsoft Azure Kubernetes Service (AKS) 叢集 (或叢集上發生「429 太多要求」錯誤所造成的失敗進行疑難解答。

徵狀

您會收到類似下列文字的錯誤:

服務傳回錯誤。

Status=429

Code=“OperationNotAllowed”

Message=“伺服器已拒絕要求,因為已收到太多此訂用帳戶的要求。」

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”}“}

原因:呼叫量過多會導致 Azure 對您的訂用帳戶進行節流

Azure 上的 Kubernetes 叢集 (具有或不含 AKS) 會頻繁相應增加或相應減少,或使用叢集自動調整程式,可能會導致大量的 HTTP 呼叫。 此呼叫量可能會導致失敗,因為它超過您 Azure 訂用帳戶的指派配額。

如需這些錯誤的詳細資訊,請參閱節流 Azure Resource Manager 要求針對 API 節流錯誤進行疑難解答。 如需如何分析和識別這些錯誤原因並取得解決這些錯誤之建議的相關信息,請參閱 使用 AKS 診斷和解決問題來分析和識別錯誤

解決方案 1:升級至更新版本的 Kubernetes

執行 Kubernetes 1.18。x 或更新版本。 這些版本包含許多改善,如 AKS 節流/429 錯誤支援大型叢集而不進行節流中所述。 不過,如果您因為訂用帳戶) 中的實際負載或客戶端數目而仍然看到節流 (,您可以嘗試下列解決方案。

解決方案 2:增加自動調整程式掃描間隔

如果您 發現「已偵測到叢集自動調整程式節流」診斷報告 叢集自動調整程式所造成的節流,您可以嘗試增加 自動調整程式掃描間隔 ,以減少從叢集自動調整程式 (VMSS) 對虛擬機擴展集的呼叫數目。

解決方案3:重新設定第三方應用程式以進行較少的呼叫

當您 在「檢視要求率和節流詳細數據」診斷中依使用者代理程式進行篩選時,如果您發現第三方應用程式 (例如監視應用程式) 發出過多的 GET 要求,請變更這些應用程式的設定,以降低 GET 呼叫的頻率。 此外,請確定應用程式用戶端在呼叫 Azure API 時使用指數輪詢。

解決方案 4:將您的叢集分割成不同的訂用帳戶或區域

如果有許多使用虛擬機擴展集的叢集和節點集區,請嘗試將叢集分割成相同訂用帳戶) 內 (不同的訂用帳戶或區域。 大部分的 Azure API 限制都是訂用帳戶區域層級的共用限制。 例如,子一區域和美國東部區域內的所有叢集和用戶端都會共用虛擬機擴展集 GET API 的限制。 因此,您可以在新的區域中移動或調整新的 AKS 叢集,並解除封鎖 Azure API 節流。 例如,如果您預期叢集具有高活動 (,如果您有作用中的叢集自動調整程式) ,這項技術會很有説明。 如果您有許多用戶端 (,例如) 器、Terraform 等,也很有説明。 由於所有叢集的彈性和輪詢 Azure API 的用戶端數目都不同,因此對於每個訂用帳戶區域層級可執行的叢集數目沒有一般指導方針。 如需特定指引,您可以建立支援票證。

使用 AKS 診斷和解決問題來分析和識別錯誤

針對 AKS 叢集,您可以使用 AKS 診斷和解決問題 來分析及識別這些錯誤的原因,並取得解決這些錯誤的建議。 流覽至 Azure 入口網站 中的叢集,然後選取左側導覽中的 [診斷並解決問題],以開啟 [AKS 診斷] 和 [解決問題]。 搜尋 並開啟 Azure 資源要求節流,您可以在其中取得具有一系列診斷的報告。 這些診斷可以顯示叢集是否在 Azure Resource Manager (ARM) 或資源提供者 (RP) 的 429) 回應 (發生任何要求速率節流,以及節流的來源。 例如:

  • 偵測到叢集的要求速率節流:如果在目前的 AKS 叢集中偵測到節流,此診斷會提供一些一般建議。

  • 已偵測到叢集自動調整程式節流:如果偵測到節流並源自叢集自動調整程式,就會顯示此診斷。

    若要減少來自叢集自動調整程式的要求量,請使用下列方法:

    • 增加自動調整程式掃描間隔,以減少從叢集自動調整程式到虛擬機擴展集的呼叫次數。 此方法可能會對相應增加所花費的時間造成負面延遲影響,因為叢集自動調整程式會等候較長的時間,然後才呼叫新虛擬機的 Azure 計算資源提供者 (CRP) 。
    • 請確定叢集至少位於 1.18 版的 Kubernetes 上。 收到 429 節流回應時,Kubernetes 1.18 版和更新版本會更妥善地處理要求速率輪詢。 強烈建議您留在支援的 Kubernetes 版本內,以接收安全性修補程式。
  • 節流 - Azure Resource Manager:此診斷會顯示 AKS 叢集中指定時間範圍內的節流要求數目。

  • 要求率 - Azure Resource Manager:此診斷會顯示 AKS 叢集中指定時間範圍內的要求總數。

  • 檢視要求率和節流詳細數據:此診斷有多個圖表可判斷節流詳細數據,包括節流要求和要求總數。 您也可以使用下列維度來篩選結果:

    • 主機:偵測到 HTTP 狀態 429 回應的主機。 Azure Resource Manager 節流來自 management.azure.com;任何其他專案都是較低層級的資源提供者。
    • 使用者代理程式:具有已節流之指定使用者代理程式的要求。
    • 作業:偵測到 HTTP 狀態 429 回應的作業。
    • 用戶端 IP:傳送節流要求的用戶端 IP 位址。

要求節流可能是由此訂用帳戶中任何叢集的組合所造成,而不只是此叢集的要求速率。

範例 1:叢集自動調整程式節流

此範例是關於分析叢集自動調整程式所造成的節流。

如果您發現已在AKS診斷和解決已知問題>、可用性和效>能Azure 資源要求節流偵測到叢集自動調整程式節流,則表示叢集自動調整程序發出的要求已受到節流。

此圖顯示偵測到叢集自動調整程式要求節流。

您可以在節流 - Azure Resource Manager 診斷中找到節流要求的數目,以及何時節流要求。

顯示何時節流叢集自動調整程式要求的圖表。

您可以在相同的期間內找到所有 ARM 要求的數目。

所有 ARM 要求的圖表。

您可以檢查 檢視要求率和節流詳細數據 診斷,以尋找節流詳細數據。 從 [選取篩選器] 下拉式清單中選取 [依使用者代理程序選取 429s],您可以看到自動調整程式要求已從 15:00 節流至 16:00。

使用者代理程序的節流圖。

您也可以找到叢集自動調整程式和其他使用者代理程序的節流要求總數。

依使用者代理程序的節流總計圖表。

您也可以依作業篩選節流。 在此情況下,VMSS VM 刪除作業會進行節流。

依作業節流的圖表。

您可以找到節流要求的數目,以及依作業分組的所有要求。

依作業的總節流圖。

然後,您可以遵循 建議動作 中的建議來減少節流。

圖表顯示偵測到叢集自動調整程式要求節流。

範例 2:雲端提供者節流

此範例是關於雲端提供者所造成的節流。 通常會在大型叢集中操作資源時發生,例如,在具有超過 500 個節點的叢集中佈建 Azure Load Balancer。

如果您在叢集中發現節流,您可以在 檢視要求速率和節流詳細數據 診斷中看到節流詳細數據。 從 [選取篩選器] 下拉式清單中選取 [依使用者代理程序選取 429s],您可以看到雲端提供者要求已從 03:00 節流至 06:00。

顯示偵測到節流的圖表。

使用者代理程序的節流圖。

您也可以依作業篩選,以找出節流作業是 「Network/loadBalancers/read」。。

依作業節流的圖表。

您可以使用 AKS 預覽功能節點 IP 型 Load Balancer 來減少此節流。

與我們連絡,以取得說明

如果您有問題或需要相關協助,請建立支援要求,或詢問 Azure community 支援。 您也可以將產品意見反應提交給 Azure 意應見反社群