共用方式為


Azure 容器網路介面 (CNI) 重疊網路

使用 Azure CNI 重疊,叢集節點會部署到 Azure 虛擬網路 (VNet) 子網。 Pod 會從私人 CIDR 以邏輯方式指派 IP 位址,與裝載節點的 VNet 不同。 叢集中的 Pod 和節點流量會使用重疊網路。 網路位址轉換 (NAT) 會使用節點的 IP 位址來連線至叢集外部的資源。 此解決方案可節省大量 VNet IP 位址,並可讓您將叢集調整為更大的大小。 額外的優點是,您可以在不同的 AKS 叢集中重複使用私人 CIDR,也就可以擴充 Azure Kubernetes Service (AKS) 中容器化應用程式的可用 IP 空間。

重疊網路概觀

在重疊網路中,只有 Kubernetes 叢集節點會獲指派來自子網路的 IP。 Pod 會接收建立叢集時所提供私人 CIDR 的 IP。 每個節點都會從相同的 CIDR 獲指派一個 /24 位址空間。 當您擴增叢集時所建立的額外節點會自動接收來自相同 CIDR 的 /24 位址空間。 Azure CNI 會將 IP 指派給來自此 /24 空間的 Pod。

個別的路由網域會在 Pod 私人 CIDR 空間的 Azure 網路堆疊中建立,而這會為 Pod 之間的直接通訊建立重疊網路。 省去在叢集子網上佈建自訂路由,或使用封裝方法來通道 Pod 之間的流量的需求,這可在與 VNet 中 VM 相等的 Pod 之間提供連線效能。 在 Pod 內執行的工作負載甚至不知道網路位址的操作。

此圖顯示兩個節點,其中有三個 Pod 分別在重疊網路中執行。叢集外部端點的 Pod 流量會透過 NAT 路由傳送。

透過 NAT,使用節點 IP 以與叢集外部端點的通訊,例如內部部署和對等互連 VNet。 Azure CNI 會將流量的來源 IP (Pod 的重疊 IP) 轉譯為 VM 的主要 IP 位址,這可讓 Azure 網路堆疊將流量路由傳送至目的地。 叢集外部端點無法直接連線至 Pod。 您必須將 Pod 的應用程式發佈為 Kubernetes Load Balancer 服務,才能在 VNet 上與其連線。

您可以使用標準 SKU Load Balancer受控 NAT 閘道,為重疊 Pod 提供網際網路的輸出連線。 您也可以使用叢集子網路上的使用者定義路由,以將輸出流量導向至防火牆來控制輸出流量。

您可以使用輸入控制器 (例如 Nginx 或 HTTP 應用程式路由) 來設定叢集的輸入連線。 您無法使用 Azure 應用程式閘道來設定輸入連線。 如需詳細資訊,請參閱 Azure CNI 重疊的限制

Kubenet 與 Azure CNI 重疊之間的差異

下表提供 Kubenet 與 Azure CNI 重疊之間的詳細比較:

區域 Azure CNI 重疊 kubenet
叢集調整 5000 個節點和 250 個 Pod/節點 400 個節點和 250 個 Pod/節點
網路組態 簡單 - Pod 網路不需要額外的設定 複雜 - 需要叢集子網路上的路由表和 UDR,以用於 Pod 網路
Pod 連線效能 與 VNet 中 VM 相等的效能 額外躍點會增加次要延遲
Kubernetes 網路原則 Azure 網路原則 Calico、Cilium Calico
支援的 OS 平台 Linux 和 Windows 伺服器 2022、2019 僅限 Linux

IP 位址規劃

叢集節點

設定 AKS 叢集時,請確定您的 VNet 子網路有足夠的空間可供日後調整。 您可以將每個節點集區指派給專用子網路。

/24 子網路最多可以容納 251 個節點,因為前三個 IP 位址會保留供管理工作使用。

Pod

重疊解決方案會從您在叢集建立期間所指定的私人 CIDR,為每個節點上的 Pod 指派 /24 位址空間。 /24 大小固定,而且無法增加或減少。 您最多可以在節點上執行 250 個 Pod。

規劃 Pod 的 IP 位址空間時,請考慮下列因素:

  • 請確定私人 CIDR 夠大,足以為新節點提供 /24 位址空間,以支援未來的叢集擴充。
  • 相同的 Pod CIDR 空間可以在相同 VNet 的多個獨立 AKS 叢集上使用。
  • Pod CIDR 空間不得與叢集子網路範圍重疊。
  • Pod CIDR 空間不得與直接連線的網路重疊 (例如 VNet 同儕節點、ExpressRoute 或 VPN)。 如果外部流量在 podCIDR 範圍中有來源 IP,則需要透過 SNAT 轉譯為非重疊 IP,才能與叢集通訊。

Kubernetes 服務位址範圍

服務位址 CIDR 的大小取決於您打算建立的叢集服務數目。 其必須小於 /12。 此範圍不應與 Pod CIDR 範圍、叢集子網路範圍以及對等互連 VNet 和內部部署網路中所使用的 IP 範圍重疊。

Kubernetes DNS 服務 IP 位址

此 IP 位址是在叢集服務探索使用的 Kubernetes 服務位址範圍內。 請勿在位址範圍中使用第一個 IP 位址,因為此位址已用於 kubernetes.default.svc.cluster.local 位址。

網路安全性群組

Azure CNI 重疊的 Pod 到 Pod 流量不會封裝,而且會套用網路安全群組規則的子網路。 如果子網路 NSG 包含會影響 Pod CIDR 流量的拒絕規則,請確定下列規則已就緒,以確保適當的叢集功能 (除了所有 AKS 輸出需求):

  • 從節點 CIDR 到所有埠和通訊協議上節點 CIDR 的流量
  • 所有連接埠與通訊協定上從節點 CIDR 到 Pod CIDR 的流量 (服務流量路由所需)
  • 所有連接埠與通訊協定上從 Pod CIDR 到 Pod CIDR 的流量 (Pod 到 Pod 和 Pod 到流量路由所需,包括 DNS)

從 Pod 到 Pod CIDR 區塊外部任何目的地的流量會利用 SNAT,將來源 IP 設定為 Pod 執行所在節點的 IP。

如果您想要限制叢集中工作負載之間的流量,建議您使用 網路原則

每個節點的最大 Pod 數目

您可以在建立叢集時或新增節點集區時,設定每個節點的最大 Pod 數目。 Azure CNI 重疊的預設和最大值為 250,最小值為 10。 建立節點集區期間所設定的每個節點值 Pod 上限只會套用至該節點集區中的節點。

選擇要使用的網路模型

Azure CNI 為 Pod 提供兩個 IP 位址選項:將 VNet IP 指派給 Pod 的傳統設定,以及重疊網路。 選擇用於 AKS 群集的選項是靈活性和進階設定需求之間的平衡。 下列考量有助於概述每種網路模型最合適的時機。

在下列情況下使用重疊網路

  • 您想要調整為大量 Pod,但 VNet 中的 IP 位址空間有限。
  • 大部分的 Pod 通訊是在叢集內。
  • 您不需要虛擬節點這類進階 AKS 功能。

在下列情況下使用傳統 VNet 選項

  • 您有可用的 IP 位址空間。
  • 大部分的 Pod 通訊是在叢集外部的資源。
  • 叢集外部資源需要直接連線至 Pod。
  • 您需要虛擬節點這類 AKS 進階功能。

Azure CNI 重疊的限制

Azure CNI 重疊有下列限制:

  • 您無法使用應用程式閘道作為輸入控制器 (AGIC)。
  • 不支援虛擬機器可用性設定組 (VMAS)。
  • 您無法在節點集區中使用 DCsv2 系列 虛擬機器。 若要符合機密運算需求,請考慮改用 DCasv5 或 DCadsv5 系列機密 VM
  • 如果您使用自己的子網路來部署叢集,則包含 VNet 的子網路、VNet 和資源群組名稱必須是 63 個字元或更少。 這些名稱將會用來作為 AKS 背景工作角色節點中的標籤,受到 Kubernetes 標籤語法規則的約束。