共用方式為


429 太多要求錯誤

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

徵兆

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

服務傳回錯誤。

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 上執行頻繁相應增加或相應減少或使用叢集自動調整程式之 Azure 上的 Kubernetes 叢集,可能會導致大量的 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 節流上解除封鎖。 這項技術可協助您預期叢集具有高活動(例如,如果您有作用中的叢集自動調整程式)。 如果您有許多用戶端(例如 Rancher、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 要求的圖表。

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

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

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

使用者代理程式的總節流圖表。

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

依作業的節流圖。

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

依作業的總節流圖表。

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

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

範例 2:雲端提供者節流

此範例與雲端提供者所造成的節流有關。 例如,在具有超過 500 個節點的叢集中佈建 Azure Load Balancer 時,通常會發生此情況。

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

顯示偵測到節流的圖表。

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

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

依作業的節流圖。

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

與我們連絡,以取得說明

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