Azure Load Balancer 會在支援輸入和輸出案例的開放系統互相連線 (OSI) 模型本身的第 4 層上運作。 這會將抵達負載平衡器前端的輸入流量分送給後端集區執行個體。
公用負載平衡器與 AKS 整合有兩個用途:
- 將私人 IP 位址轉譯為其 輸出集區的公用 IP 位址部分,以提供 AKS 虛擬網路 (VNet) 內叢集節點的輸出連線。
- 透過 Kubernetes 服務類型
LoadBalancer提供對應用程式的存取,讓您輕鬆擴展應用程式並建立高可用性服務。
本文涵蓋 AKS 公用負載平衡器整合。 如需內部負載平衡器整合,請參閱使用 AKS 內部負載平衡器。
先決條件
- AKS 支援標準 SKU Azure Load Balancer,這是建立 AKS 叢集時預設使用的。 標準 SKU 讓你可以使用更大的後端池、多節點池、可用性區域 等功能,且預設是安全的。 Basic SKU 於 2025 年 9 月 30 日退役,AKS 不再支援。 如果你有一個現有的、使用 Basic SKU 的 AKS 叢集,請參閱 從 AKS 上的 Basic 負載平衡器升級。 欲了解更多關於 Load Balancer SKU 的資訊,請參閱 Azure Load Balancer SKU 比較。
- 如需型別
LoadBalancerKube 服務支援的註釋的完整清單,請參閱 LoadBalancer 註釋。 - 本文假設您的 AKS 叢集使用的是「標準」SKU Azure Load Balancer。 如果您需要 AKS 叢集,您可以使用 Azure CLI、 Azure PowerShell 或 Azure 入口網站來建立叢集。
- 你需要
kubectl安裝並設定才能連接到你的 AKS 叢集。 要安裝kubectl,下載你的叢集憑證並驗證連線,請點 「連接到叢集」。
Important
若要使用自己的網路閘道、防火牆或 Proxy 提供輸出連接,可以跳過負載平衡器輸出集區和個別前端 IP 的建立,並使用 輸出型別作為 UserDefinedRouting(UDR)。 輸出類型會定義叢集的輸出方法,且其預設類型為 LoadBalancer。
Limitations
您建立和管理可支援「標準」SKU 負載平衡器的 AKS 叢集時,需遵守下列限制:
AKS 管理代理程式節點的生命週期和作業。 不支援修改與代理程式節點相關聯的 IaaS 資源。 例如不支援負載平衡器資源群組的手動變更。
必須至少有一個公用 IP 或 IP 首碼,才能允許來自 AKS 叢集的輸出流量。 需要公用 IP 或 IP 首碼,以維持控制平面和代理程式節點之間的連線能力,同時維持與舊版 AKS 的相容性。 可使用下列選項來指定「標準」SKU 負載平衡器的公用 IP 或 IP 首碼:
- 提供您自己的公用 IP。
- 提供您自己的公用 IP 首碼。
- 指定一個 100 以內的數字,以允許 AKS 叢集在與 AKS 叢集相同的資源群組中建立相同數量的標準 SKU 公用 IP。 此資源群組通常在開頭命名為 。
MC_AKS 會將公用 IP 指派給「標準」SKU 負載平衡器。 如果未指定公用 IP、公用 IP 前置或 IP 數量,預設會在 AKS 叢集所在的同一個資源群組中自動建立一個公用 IP。 請務必允許公用位址,並避免建立任何禁止 IP 建立的 Azure 原則。
由 AKS 建立的公用 IP 位址不能重複用作自訂的自備 (BYO) 公用 IP 位址。 您必須建立和管理所有自訂 IP 位址。
你無法直接修改 AKS 管理的負載平衡資源來更改負載平衡器的 SKU。 若要將現有 AKS 叢集從已退休的 Basic SKU 遷移到 標準 SKU,請使用支援的 AKS 升級流程。 遷移會造成停機,且一旦開始後就無法回滾。
「標準」SKU 負載平衡器只支援「標準」SKU IP 位址。
在 AKS 中建立負載平衡器服務
建立輸出型別 LoadBalancer(預設)的 AKS 叢集後,叢集即準備好使用負載平衡器來公開服務。
確認你的叢集至少有一個運行中且隨時可用的 pod,並標示
app: public-app標籤。 下一步的服務清單會選擇帶有此標籤的 pods,但不會建立部署。kubectl get pods -l app=public-app建立
public-svc.yaml服務資訊清單將建立型別LoadBalancer的公用服務。apiVersion: v1 kind: Service metadata: name: public-svc spec: type: LoadBalancer ports: - port: 80 selector: app: public-app
指定負載平衡器 IP 位址
如果您想要將特定 IP 位址與負載平衡器搭配使用,您有兩個選項可指定 IP 位址:
-
設定服務註解 (建議):用
service.beta.kubernetes.io/azure-pip-name來以名稱指定現有的公共 IP 資源。 此註釋是最有效率的選項,能協助您避免可能的節流。 你也可以用service.beta.kubernetes.io/azure-load-balancer-ipv4來做 IPv4 位址和service.beta.kubernetes.io/azure-load-balancer-ipv6IPv6 位址。 關於公共 IP 資源、資源群組及身份要求,請參見「 使用 AKS 負載平衡器使用靜態公共 IP 位址」。 -
將 LoadBalancerIP 屬性新增至負載平衡器 YAML 資訊清單:將屬性新增至
Service.Spec.LoadBalancerIP負載平衡器 YAML 資訊清單。 這個欄位在 上游 Kubernetes 之後已經被棄用,且不支援雙堆疊。 目前的使用量將維持不變,且現有服務繼續運作,不需修改。
部署負載平衡器服務設定檔
使用
kubectl apply部署公用服務資訊清單,並指定 YAML 資訊清單的名稱。kubectl apply -f public-svc.yamlAzure Load Balancer 是透過新的公用 IP 設定,會將新服務列於前端。 Azure Load Balancer 可以有多個前端 IP,所以部署的每個新服務都會取得可供唯一存取的專用新前端 IP。
請用指令
kubectl get service確認你的服務已建立且負載平衡器已設定。kubectl get service public-svc當您檢視服務詳細資料時,在負載平衡器上為此服務建立的公用 IP 位址會顯示在輸出的 EXTERNAL-IP 欄中。 IP 位址可能需要幾分鐘才能從<擱置>變為實際的公用 IP 位址。 下列範例輸出顯示成功建立服務:
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE default public-svc LoadBalancer 10.0.39.110 203.0.113.187 80:32068/TCP 52s透過使用指令
kubectl describe service,獲取更詳細的服務資訊。kubectl describe service public-svc以下範例輸出是執行
kubectl describe service後輸出的精簡版本。 LoadBalancer 輸入顯示服務公開的外部 IP 位址。 IP 顯示內部位址。Name: public-svc Namespace: default Labels: <none> Annotations: <none> Selector: app=public-app ... IP: 10.0.39.110 ... LoadBalancer Ingress: 203.0.113.187 ... TargetPort: 80/TCP NodePort: 32068/TCP ... Session Affinity: None External Traffic Policy: Cluster ...