Azure Kubernetes Service(AKS)中的應用程式網路概念

在應用程式開發的容器型微服務方法中,應用程式元件搭配運作以處理其工作。 Kubernetes 提供各種資源以啟用這類合作:

  • 您可以在內部或外部連接和公開應用程式。
  • 您可以對應用程式載入平衡,以建置具有高可用性的應用程式。
  • 您可以限制進入 Pod 和節點或其間的網路流量,以提升安全性。
  • 針對較複雜的應用程式,您可以設定終止 SSL/TLS 的輸入流量或多個元件的路由。

本文將介紹為 AKS 中的應用程式提供網路功能的核心概念:

Kubernetes 網路基本概念

Kubernetes 採用虛擬網路層來管理應用程式或其元件內和其間的存取:

  • Kubernetes 節點和虛擬網路:Kubernetes 節點會連線到虛擬網路。 此設定可讓 Pod (Kubernetes 中的基本部署單位) 同時具有輸入和輸出連線能力。

  • Service 路由元件:視網路資料平面而定,節點會使用 kube-proxy 或 Cilium 來進行 Kubernetes Service 路由。 使用 Azure CNI Powered by Cilium 的 AKS 叢集不使用 kube-proxy.

關於特定的 Kubernetes 功能:

  • 負載平衡器:您可以使用負載平衡器,將網路流量平均分散到各種資源。
  • 輸入控制器:這些有助於第 7 層路由,這對於引導應用程式流量至關重要。
  • 輸出流量控制:Kubernetes 可讓您管理和控制來自叢集節點的輸出流量。
  • 網路原則:這些原則會啟用安全性措施,並篩選 Pod 中的網路流量。

在 Azure 平台的背景下:

  • Azure 簡化 AKS (Azure Kubernetes Service) 叢集的虛擬網絡。
  • 在 Azure 上建立 Kubernetes 負載平衡器同時會設定對應的 Azure 負載平衡器資源。
  • 當您建立 Kubernetes LoadBalancer 服務時,Azure 會為 AKS 管理的資源設定服務流量所需的網路安全性群組規則。
  • Azure 也能管理 HTTP 應用程式路由的外部 DNS 設定,當新的 Ingress 路由建立時。

Azure 虛擬網路

在 AKS 中,您可以部署使用以下其中一種網路模型的叢集:

  • 重疊網路模型:重疊網路是 Kubernetes 中最常使用的網路模型。 Pod 所指派到的 IP 位址是來自以邏輯方式與部署 AKS 節點之 Azure 虛擬網路子網路分開的私人 CIDR。 相較於一般網路模型,此模型可簡化並改善可擴縮性。
  • 扁平網路模型:AKS 中的扁平網路模型會從與 AKS 節點位於相同 Azure 虛擬網路中的子網,將 IP 位址指派給 Pod。 對於私人網路流量,目的地所見的來源 IP 位址取決於 IP 位址管理(IPAM)選項。 Azure CNI Pod 子網路會保留連接虛擬網路間的 Pod IP 位址。 在 Azure CNI 節點子網路中,叢集虛擬網路中的目的地會看到 pod 的 IP 位址,但叢集虛擬網路外的目的地則會看到節點 IP 位址。 對於網際網路出口,設定的出站方法決定了網際網路目的地能看到的公共來源 IP 位址。

如需有關 AKS 中網路模型的詳細資訊,請參閱 AKS 中的 CNI 網路。

控制輸出流量

AKS 叢集會部署在虛擬網路上,並具有該虛擬網路外部服務的輸出相依性,這些服務幾乎完全以完整網域名稱 (FQDN) 定義。 AKS 提供數個輸出組態選項,可讓您自訂存取這些外部資源的方式。

這很重要

自 2026 年 3 月 31 日 起,Azure Kubernetes Service (AKS) 不再支援虛擬機(VM)的預設出站存取權限。 新的 AKS 叢集若使用 AKS 管理的虛擬網路 選項,預設會將叢集子網放入 私有子網 (defaultOutboundAccess = false)。 此設定 不影響 AKS 管理的叢集流量,該叢集使用明確設定的出站路徑。 它可能影響 不支援的情況,例如將其他資源部署到同一子網。 使用 BYO VNet 的叢集不受此變更影響。 在受支援的組態中,無需採取任何動作。 欲了解更多退休資訊,請參閱Azure更新退休公告。 欲掌握最新公告與更新,請參考AKS發布說明。

輸出組態選項

欲了解更多支援的 AKS 叢集出站配置類型,請參見 Azure Kubernetes Service (AKS) 中自訂叢集出口的出站類型。

根據預設,AKS 叢集具有不受限制的輸出網際網路存取,這可讓您執行的節點和服務視需要存取外部資源。 如有需要,您可以限制輸出流量。

如需如何限制叢集的輸出流量的詳細資訊,請參閱在 AKS 中控制叢集節點的輸出流量。

網路安全性群組

網路安全性群組可篩選 VM 的流量,例如 AKS 節點。 當你建立服務,例如LoadBalancer,Azure 平台會自動配置 AKS 管理資源上的服務流量所需的網路安全群組規則。

AKS 不會對其子網套用網路安全群組,也不會修改你與客戶提供的子網路關聯的網路安全群組。 如果你將網路安全群組與自訂子網關聯,必須確保其規則允許所需的節點與 pod 流量。 欲了解更多資訊,請參閱 AKS CNI網路先修課程。

您也可以使用網路原則,自動將流量篩選規則套用至 Pod。

如需詳細資訊,請參閱網路安全性群組如何篩選網路流量。

自訂虛擬網路需求

當你使用自訂虛擬網路搭配 AKS 叢集時,如果你加入網路安全群組規則來限制子網路間的流量,請確保這些規則允許你叢集設定所需的流量。

API Server VNet 整合已在 AKS Automatic 中預先設定。 在 AKS Standard 中,此功能為可選,必須明確啟用。 當您的叢集使用 API Server VNet 整合時,允許以下流量:

目的地 來源 協定 港口 使用
APIServer 子網路 CIDR 叢集子網路 TCP 443 和 4443 啟用節點與 API 伺服器之間通訊的必要專案。
APIServer 子網路 CIDR Azure Load Balancer TCP 9988 必須啟用 Azure Load Balancer 與 API 伺服器之間的通訊。 你也可以啟用 Azure Load Balancer 與 API 伺服器子網 CIDR 之間的所有通訊。

如需詳細資訊,請參閱 API Server VNet 整合。

對於節點與莢體通訊,當網路安全群組規則限制對應的CIDR範圍時,允許以下流量:

目的地 來源 協定 港口 使用
節點 CIDR 節點 CIDR 所有通訊協定 所有連接埠 必須啟用以實現節點之間的通訊。
Pod CIDR 節點 CIDR 所有通訊協定 所有連接埠 服務流量路由的必要項目。
Pod CIDR Pod CIDR 所有通訊協定 所有連接埠 Pod 到 Pod 及 Pod 到服務流量的必要項目,包括 DNS。

適用的節點與 Pod CIDR 範圍取決於你叢集的網路模型。 欲了解更多資訊,請參閱 AKS CNI網路先修課程。

DNS 解析

DNS 解析對於 AKS 中的服務發現與通訊至關重要。 預設情況下,AKS 使用 CoreDNS 來為 pod 和服務提供內部名稱解析。

為了提升 DNS 效能與可靠性,AKS 提供 LocalDNS,會在每個節點部署 DNS 代理。 LocalDNS 會在本地解析查詢,以減少延遲並消除來自 DNS 流量的 conntrack 資料表壓力。 你可以設定 LocalDNS 在上游 DNS 中斷時提供快取回應,但過期回應快取僅以盡力而為的方式運作。 LocalDNS 在大型叢集或擁有大量 DNS 查詢量的環境中特別有幫助。

LocalDNS 已在 AKS Automatic 中預先設定。 在 AKS 標準中,LocalDNS 為選配,並可依節點池設定。 在啟用 AKS Standard 之前,先確認 Kubernetes 版本、Node 作業系統和 VM SKU 的前置條件。 在現有節點池啟用 LocalDNS 會重新映像該節點。 關於前置條件與部署規劃,請參見 「配置 LocalDNS」。

網路原則

根據預設,AKS 叢集中的所有 Pod 都可以無限制地傳送及接收流量。 為了提升安全性,請定義控制流量的規則,例如:

  • 後端應用程式只對必要的前端服務公開。
  • 或者,只有連線到資料庫元件的應用層才能存取資料庫元件。

網路原則為一種在 AKS 內提供的 Kubernetes 功能,能讓您控制 Pod 之間的流量流程。 您可以根據指派的標籤、命名空間或流量連接埠等設定,允許或拒絕傳送至 Pod 的流量。 雖然網路安全性群組更適合 AKS 節點,但網路原則是更適合的雲端原生方式,可控制 Pod 流量的流程。 由於 Pod 是在 AKS 叢集內以動態方式建立的,因此可以自動套用所需的網路原則。

欲了解更多資訊,請參閱在 Azure Kubernetes Service (AKS) 中使用網路政策保護 Pod 間的流量。

後續步驟

要開始使用 AKS 網路,請使用 Azure CNI Overlay 或 Azure CNI,建立並配置一個包含你自己的 IP 位址範圍的 AKS 叢集。

如需相關的最佳作法,請參閱 AKS 中的網路連線和安全性最佳做法。

如需有關 Kubernetes 及 AKS 核心概念的詳細資訊,請參閱下列文章: