本文討論如何識別並解決當您嘗試建立或更新 Microsoft Azure Kubernetes Service(即 AKS)叢集時發生的「InvalidLoadBalancerProfileAllocatedOutboundPorts」錯誤碼。
先決條件
Azure CLI 2.53.0 版或更新版本。 若要尋找已安裝的版本,請執行 az --version 命令。
癥狀
AKS 叢集建立或更新作業失敗,並傳回下列錯誤訊息:
錯誤代碼:InvalidLoadBalancerProfileAllocatedOutboundPorts
訊息:根據布建的節點和IP數目,負載平衡器配置檔配置埠8000不在允許的範圍內。 總節點數 9 需要 72000 個埠,但只提供 64000 個埠可使用,因為只有 1 個外部公共 IP。 如需詳細資訊,https://aka.ms/aks/slb-ports請參閱 。
原因
在具有輸出類型的 LoadBalancer叢集中,來自叢集節點的流量(包括來自 Pod 中執行之應用程式的流量)會透過 AKS 管理的負載平衡器輸出,而此負載平衡器依賴來源網路位址轉換 (SNAT) 埠來建立這些輸出連線。
根據預設,每個叢集都會指派一個向外前端 IP 位址,允許一共 64,000 個 SNAT 埠,叢集中的每個工作節點都會分配到這些埠的配額。 例如,如果叢集只有50個或更少的節點,則每個工作節點會配置1,024個埠。 在叢集中執行的應用程式需要建立大量輸出連線的情況下,可用的 SNAT 埠預設數目可能不足,這會導致 SNAT 埠耗盡。
若要解決 SNAT 埠耗盡問題,請使用下列其中一個或兩種方法:
- 變更輸出前端IP位址的數目。 每個IP位址都會提供額外的64,000個SNAT埠。
- 變更分配給每個工作節點的 SNAT 埠數目。
當指定的節點計數、輸出前端IP位址數目和每個節點配置的埠數目不構成可行的設定時,就會發生「InvalidLoadBalancerProfileAllocatedOutboundPorts」錯誤。
解決方法
若要解決「InvalidLoadBalancerProfileAllocatedOutboundPorts」錯誤時,請遵循以下步驟:
使用下列公式來檢查所需的設定是否可行:
64,000 ports per IP / <outbound ports per node> * <number of outbound IPs> = <maximum number of nodes in the cluster>備註
執行這項檢查時,請務必考慮叢集升級和其他作業期間發生的節點激增。 AKS 預設為升級作業的一個緩衝區節點,但可以使用 maxSurge 參數來修改這個數位。
變更叢集的節點計數、輸出前端IP位址數目,或每個節點的SNAT埠數目。
如需如何設定配置的輸出埠,以及您可能需要之埠數目的範例和計算的詳細資訊,請參閱 設定配置的輸出埠。
參考文獻
與我們連絡,以取得說明
如果您有疑問,可以詢問 Azure 社群支援。 您也可以向 Azure 意見反應社群提交產品意見反應。