共用方式為


Azure Kubernetes Service (AKS) CNI 網路概觀

Kubernetes 使用容器網路介面 (CNI) 外掛程式來管理 Kubernetes 叢集中的網路。 CNI 負責將 IP 位址指派給 Pod、Pod 之間的網路路由、Kubernetes Service 路由等等。

AKS 提供多個 CNI 外掛程式,您可以根據您的網路需求在叢集中使用。

AKS 中的網路模型

為您的 AKS 叢集選擇 CNI 外掛程式,很大程度上取決於哪一個網路模型最符合您的需求。 每個模型都有自己的優缺點,您應該在規劃 AKS 叢集時考慮。

AKS 使用兩個主要網路模型:重疊網路平面網路

這兩個網路模型都有多個支援的 CNI 外掛程式選項。 模型之間的主要差異在於如何指派 Pod IP 位址,以及流量如何離開叢集。

重疊網路

重疊網路是 Kubernetes 中使用的最常見網路模型。 在重疊網路中,會從私人、以邏輯方式將 CIDR 與部署 AKS 節點所在 Azure VNet 子網路分開的位置,為 Pod 提供 IP 位址。 這樣可提供比平面網路模型更簡單且通常更佳的可擴縮性。

在重疊網路中,Pod 可以直接彼此通訊。 離開叢集的流量已來源網路位址轉譯 (SNAT'd) 到節點的 IP 位址,而輸入 Pod IP 流量會透過某些服務路由傳送,例如負載平衡器。 這表示 Pod IP 位址「隱藏」在節點的 IP 位址後方。 這種方法可減少叢集所需的 VNet IP 位址數目。

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

Azure Kubernetes Service 為重疊網路提供下列 CNI 外掛程式:

平面網路

不同於重疊網路,AKS 中的平面網路模型會將 IP 位址指派給來自與 AKS 節點相同 Azure VNet 之子網路的 Pod。 這表示離開叢集的流量不會 SNAT'd,而 Pod IP 位址會直接公開至目的地。 這適用於某些案例,例如當您需要向外部服務公開 Pod IP 位址時。

顯示兩個節點的圖表,其中有三個 Pod 分別在平面網路模型中執行。

Azure Kubernetes Service 為平面網路提供兩個 CNI 外掛程式。 本文不會深入探討每個外掛程式選項。 如需詳細資訊,請參閱連結的文件:

選擇 CNI

選擇 CNI 時,要考慮幾個因素。 每個網路模型都有自己的優缺點,而叢集的最佳選擇取決於您的特定需求。

選擇網路模型

AKS 中的兩個主要網路模型是重疊和平面網路。

  • 重疊網路

    • 使用針對 Pod 以邏輯方式分隔的 CIDR 範圍來節省 VNet IP 位址空間。
    • 最大叢集規模支援。
    • 簡易 IP 位址管理。
  • 平面網路

    • Pod 會取得完整的 VNet 連線能力,並可透過其來自連線網路的私人 IP 位址直接連線。
    • 需要大型、非分散的 VNet IP 位址空間。

使用案例比較

選擇網路模型時,請考慮每個 CNI 外掛程式的使用案例及其使用的網路模型類型:

CNI 外掛程式 網路模型 使用案例重點項目
Azure CNI 重疊 Overlay - 最適合 VNET IP 節省
- API Server 支援的最大節點計數 + 每個節點 250 個 Pod
- 更簡單的組態
- 沒有直接外部 Pod IP 存取
Azure CNI Pod 子網路 一般 - 直接外部 Pod 存取
- 有效 VNet IP 使用量 大型叢集規模支援的模式(預覽)
Kubenet (舊版) Overlay - 優先 IP 節省
- 有限規模
- 手動路由管理
Azure CNI 節點子網路 (舊版) 一般 - 直接外部 Pod 存取
- 更簡單的組態
- 有限規模
- VNet IP 的使用效率不佳

功能比較

您也可以比較每個 CNI 外掛程式的功能。 下表提供每個 CNI 外掛程式所支援功能的高階比較:

功能 Azure CNI 重疊 Azure CNI Pod 子網路 Azure CNI 節點子網路 (舊版) Kubenet
在現有或新的 VNet 中部署叢集 支援 支援 支援 支援 - 手動 UDR
與相同或對等互連 VNet 中 VM 的 Pod-VM 連線 Pod 起始 兩種方式 兩種方式 Pod 起始
透過 VPN/Express Route 的內部部署存取 Pod 起始 兩種方式 兩種方式 Pod 起始
存取服務端點 支援 支援 支援 支援
使用負載平衡器公開服務 支援 支援 支援 支援
使用應用程式閘道公開服務 目前不支援 支援 支援 支援
使用輸入控制器公開服務 支援 支援 支援 支援
Windows 節點集區 支援 支援 已支援 不支援
預設 Azure DNS 和私人區域 支援 支援 支援 支援
跨多個叢集共用 VNet 子網路 支援 支援 已支援 不支援

網路模型之間的支援範圍

依據您使用的 CNI,您的叢集虛擬網路資源可以透過下列其中一種方式進行部署:

  • 當您建立 AKS 叢集時,Azure 平台可以自動建立及設定虛擬網路資源。 就像在 Azure CNI 重疊、Azure CNI 節點子網路和 Kubenet 中一樣。
  • 您可以在建立 AKS 叢集時手動建立及設定虛擬網路資源,並附加至這些資源。

雖然服務端點或 UDR 等功能都支援,但 AKS 的支援原則會定義您可以進行的變更。 例如:

  • 如果您手動建立 AKS 叢集的虛擬網路資源,您可以在設定自己的 UDR 或服務端點時受到支援。
  • 如果 Azure 平台會自動為您的 AKS 叢集建立虛擬網路資源,您就無法手動變更這些 AKS 管理的資源來設定您自己的 UDR 或服務端點。

必要條件

規劃 AKS 的網路設定時,請記住數個需求和考量:

  • 適用於 AKS 叢集的虛擬網路必須允許輸出網際網路連線.
  • AKS 叢集不能將 169.254.0.0/16172.30.0.0/16172.31.0.0/16192.0.2.0/24 用於 Kubernetes 服務位址範圍、Pod 位址範圍或叢集虛擬網路位址範圍。
  • 在 BYO VNet 案例中,AKS 叢集所使用的叢集身分識別必須至少有 虛擬網路內子網的網路參與者 許可權。 如果您想要定義自訂角色,而不使用內建的網路參與者角色,則需要下列權限:
    • Microsoft.Network/virtualNetworks/subnets/join/action
    • Microsoft.Authorization/roleAssignments/write
    • Microsoft.Network/virtualNetworks/subnets/read (只有在您定義自己的子網和CIDR 時才需要)
  • 指派給 AKS 節點集區的子網路不得為委派子網路
  • AKS 不會將網路安全性群組 (NSG) 套用至其子網路,也不會修改與該子網路相關聯的任何 NSG。 如果您有自己的子網路並新增與該子網路相關聯的 NSG,則必須確保 NSG 中的安全性規則允許節點 CIDR 範圍內的流量。 如需詳細資訊,請參閱網路安全性群組

後續步驟