共用方式為


Azure Kubernetes Service (AKS) CNI 網路概觀

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

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

AKS 中的網路模型

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

AKS 使用兩個主要的網路模型: 重迭網路一般網路

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

重疊網路

重迭網路是 Kubernetes 中使用的最常見網路模型。 在重迭網路中,Pod 會從私人、以邏輯方式將 CIDR 與部署 AKS 節點所在的 Azure VNet 子網分開。 這可讓您比一般網路模型更簡單且通常更佳的延展性。

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

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

Azure Kubernetes Service 提供下列 CNI 外掛程式來重迭網路功能:

一般網路

不同於重迭網路,AKS 中的一般網路模型會將IP位址指派給來自與 AKS 節點相同 Azure VNet 之子網的 Pod。 這表示離開叢集的流量不是 SNAT,而 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
Pod-VM 與相同或對等互連 VNet 中的 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 CNI 案例中,AKS 叢集所使用的叢集身分識別必須至少有 虛擬網路內子網的網路參與者 許可權。 如果您想要定義自訂角色,而不使用內建的網路參與者角色,則需要下列權限:
    • Microsoft.Network/virtualNetworks/subnets/join/action
    • Microsoft.Network/virtualNetworks/subnets/read
    • Microsoft.Authorization/roleAssignments/write
  • 指派給 AKS 節點集區的子網路不能是委派子網路
  • AKS 不會將網路安全性群組 (NSG) 套用至其子網路,也不會修改與該子網路相關聯的任何 NSG。 如果您有自己的子網路並新增與該子網路相關聯的 NSG,則必須確保 NSG 中的安全性規則允許節點 CIDR 範圍內的流量。 如需詳細資訊,請參閱網路安全性群組

後續步驟