執行或調整大型 AKS 叢集常見問題
本文回答當您在 Microsoft Azure Kubernetes Service (AKS) 中執行或調整大型叢集時,可能發生的常見問題。 大型叢集是以超過 500 個節點規模執行的任何叢集。
我在建立、相應增加或升級期間收到「超出配額」錯誤
若要解決此問題,請在您嘗試建立、調整或升級的訂用帳戶中建立支援要求,並要求對應資源類型的配額。 如需詳細資訊,請參閱 區域計算配額。
當我部署使用進階網路的 AKS 叢集時,收到「insufficientSubnetSize」錯誤
此錯誤表示用於叢集的子網在其 CIDR 內已不再有可用的 IP,無法成功指派資源。 此問題可能會在升級、相應放大或節點集區建立期間發生。 發生此問題的原因是子網中的免費IP數目小於下列公式的結果:
要求的節點數目 * 節點集區
--max-pod
值
必要條件
若要擴充超過 400 個節點,您必須使用 Azure CNI 網路外掛程式。
若要協助規劃虛擬網路和子網以容納您要部署的節點和Pod數目,請參閱 規劃叢集的IP位址。 若要減少因IP耗盡而造成子網規劃或叢集重新建立的額外負荷,請參閱 動態IP配置。
解決方案
因為您無法更新現有子網的 CIDR 範圍,所以您必須擁有建立新子網以解決此問題的許可權。 依照下列步驟執行:
重建具有較大 CIDR 範圍且足以達成作業目標的新子網。
Create 具有新非重疊範圍的新子網。
Create 新子網上的新節點集區。
從舊節點集區清空 Pod,該集區位於即將取代的舊子網中。
刪除舊的子網和舊節點集區。
我因為 SNAT 埠耗盡而發生偶發輸出連線失敗
對於 (超過 500 個節點) 執行的叢集,建議您使用 AKS 受控網路位址轉換 (NAT) 網關 ,以提升延展性。 Azure NAT 閘道允許每個IP位址最多64,512個輸出UDP和TCP流量,以及最多16個IP位址。
如果您不是使用受控 NAT,請參閱 針對來源網路位址轉譯 (SNAT) 耗盡和連線逾時進行疑難解答 ,以瞭解並解決 SNAT 埠耗盡問題。
我無法使用 Azure 入口網站 擴充至 5,000 個節點
請遵循下列步驟,使用 Azure CLI 來擴大至最多 5,000 個節點:
Create 叢集 (中節點集區數目下限,因為執行下列命令,節點集區節點上限為 1,000) :
az aks nodepool add --resource-group MyResourceGroup --name nodepool1 --cluster-name MyManagedCluster
一次相應增加一個節點集區。 在理想的情況下,設定連續相應增加 1,000 之間的五分鐘睡眠時間。 執行下列命令:
az aks nodepool scale --resource-group MyResourceGroup --name nodepool1 --cluster-name MyManagedCluster
我的升級正在執行,但速度很慢
在其預設組態中,AKS 會在升級期間採取下列動作來激增:
- 建立一個新節點。
- 將節點集區調整為超過一個節點所需的節點數目。
對於最大激增設定,一個節點的預設值表示 AKS 會先建立一個新節點,然後再清空現有的應用程式,並取代舊版的節點。 這個額外的節點可讓 AKS 將工作負載中斷降至最低。
當您升級具有許多節點的叢集時,如果您使用的預設值 max-surge
,可能需要數小時才能升級整個叢集。 您可以自定義 max-surge
每個節點集區的 屬性,以在升級速度與升級中斷之間進行取捨。 藉由增加最大激增值,您可以讓升級程式更快完成。 不過,最大激增的較大值也可能會在升級程式期間造成中斷。
執行下列命令,以增加或自定義現有節點集區的最大激增:
az aks nodepool update --resource-group MyResourceGroup --name mynodepool --cluster-name MyManagedCluster --max-surge 5
我的升級達到配額 (5,000 個叢集) 限制
若要解決此問題,請 參閱增加區域 vCPU 配額。
我的內部服務在超過 750 個節點上的建立速度緩慢或因為超時錯誤而失敗
Standard Load Balancer (SLB) 後端集區更新是已知的效能瓶頸。 我們正在開發可讓您更快速地大規模建立服務和SLB的新功能。 若要將您對此問題的意見反應傳送給我們,請參閱 Azure Kubernetes 支援以 IP 為基礎的後端集區負載平衡器。
解決方案
建議您將叢集相應減少為少於 750 個節點,然後為叢集建立內部負載平衡器。 若要建立內部負載平衡器,請依照下列範例程式建立 LoadBalancer
服務類型和 azure-load-balancer-internal
批注。
步驟 1:Create 內部負載平衡器
若要建立內部負載平衡器,請建立名為 internal-lb.yaml 且包含 LoadBalancer
服務類型和 azure-load-balancer-internal
批注的服務指令清單,如下列範例所示:
apiVersion: v1
kind: Service
metadata:
name: internal-app
annotations:
service.beta.kubernetes.io/azure-load-balancer-internal: "true"
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: internal-app
步驟 2:部署內部負載平衡器
使用 kubectl apply
命令部署內部負載平衡器,並指定 YAML 指令清單的名稱,如下列範例所示:
kubectl apply -f internal-lb.yaml
建立叢集之後,您也可以根據此程式) 布建內部負載平衡器 (,並讓內部負載平衡服務持續執行。 這麼做可讓您大規模地將更多服務新增至負載平衡器。
大規模建立 SLB 服務需要數小時才能執行
SLB 後端集區更新是已知的效能瓶頸。 我們正在開發一項新功能,可讓您大規模執行負載平衡服務,以大幅加快建立、更新和刪除作業的效能。 若要將您的意見反應傳送給我們,請參閱 Azure Kubernetes 支援以 IP 為基礎的後端集區負載平衡器。
協力廠商資訊免責聲明
本文提及的協力廠商產品是由與 Microsoft 無關的獨立廠商所製造。 Microsoft 不以默示或其他方式,提供與這些產品的效能或可靠性有關的擔保。
與我們連絡,以取得說明
如果您有問題或需要相關協助,請建立支援要求,或詢問 Azure community 支援。 您也可以將產品意見反應提交給 Azure 意應見反社群。