識別外掛程式選項
AKS 叢集需要一個網路外掛程式,才能協助 Pod 對 Pod 通訊、Pod 對節點通訊,以及在某些情況下,節點對 Pod 通訊。 AKS 上有兩種網路模型:kubenet 和 Azure CNI。 Azure CNI 還有其他演進,包括 Azure CNI 重疊、適用於動態 IP 配置的 Azure CNI,以及由 Cilium 提供的 Azure CNI。 每個模型都有其特有的一組功能和限制。
kubenet
根據預設,AKS 叢集會使用 kubenet。 使用 kubenet 時,會在部署叢集時自動建立 Azure 虛擬網路、子網路和路由表,但可以提供現有的網路資源。 使用 kubenet:
- 節點會接收來自 Azure 虛擬網路子網路的 IP 位址。
- Pod 會接收來自邏輯上不同於節點集區子網路的位址空間的 IP 位址。
- 網路位址轉譯 (NAT) 接著會進行設定,使 Pod 可以連接 Azure 虛擬網路上的資源。
- 流量的來源 IP 位址會被轉譯為節點的主要 IP 位址。
Pod 無法跨節點彼此直接通訊。 相反地,使用者定義路由 (UDR) 和 IP 轉送會用來進行跨節點的 Pod 之間的連線。 根據預設,UDR 和 IP 轉送設定會由 AKS 服務建立和維護,不過您可以選擇自備路由表進行自訂路由管理。
如果您的自訂子網路未包含路由表,AKS 會為您建立一個路由表,並在整個叢集生命週期中在該路由表中新增規則。 如果您的自訂子網路在建立叢集時包含路由表,AKS 會在叢集作業期間認可現有的路由表,並據以新增/更新雲端提供者作業的規則。
Azure CNI
Azure CNI 外掛程式是更複雜的網路選項,可設定性更高,也具有更多支援的功能。 使用 Azure CNI 時,需要預先存在的子網路和虛擬網路,才能利用叢集並搭配使用需要額外規劃的 Azure CNI 網路功能。 虛擬網路及其子網路的大小必須能夠容納您規劃執行的 Pod 數目以及叢集的節點數目。 使用 Azure CNI:
- 節點會接收來自 Azure 虛擬網路子網路的 IP 位址空間。
- 每個 Pod 都會接收節點集區子網路中的 IP 位址,並可以直接與其他 Pod 和服務進行通訊。
- 您的叢集大小可以多達您指定的 IP 位址範圍。 不過,IP 位址範圍必須事先規劃,且所有 IP 位址都是由 AKS 節點根據可支援的 Pod 數目上限加以取用。
使用 Azure CNI 時,需要預先存在的子網路和虛擬網路,才能利用 Azure CNI 網路外掛程式。 您可以在 AKS 叢集的建立期間建立這個子網路和虛擬網路。
Azure CNI 重疊
Azure CNI 重疊代表 Azure CNI 的演進,可解決從虛擬網路 IP 指派給 Pod 所產生的可擴縮性和規劃挑戰。 Azure CNI 重疊會將私人 CIDR IP 指派給 Pod。 私人 IP 與虛擬網路是分開的,而且可以跨多個叢集重複使用。 Azure CNI 重疊可以調整到超過在 Kubenet 叢集中強制執行的節點限制 400。 Azure CNI 重疊是大多數叢集的建議選項。
由 Cilium 提供的 Azure CNI
由 Cilium 提供的 Azure CNI 會使用 Cilium 來提供高效能的網路、可觀察性和網路原則強制執行。 其會以原生方式與 Azure CNI 重疊整合,以實現可調整的 IP 位址管理 (IPAM)。
此外,Cilium 預設會強制執行網路原則,而不需要單獨的網路原則引擎。 由 Cilium 提供的 Azure CNI 可以使用 ePBF 程式和更有效率的 API 物件結構,來調整到超過 Azure 網路原則管理員 250 個節點/20 K Pod 的限制。
由 Cilium 提供的 Azure CNI 是需要強制執行網路原則之叢集的建議選項。
使用自訂外掛程式
對於計畫使用自訂網路設定的客戶,沒有網路外掛程式的需求。 您可以選擇 CNI 提供者 (例如 Cilium 或 Flannel)。 不過,最好查閱它們自己的文件,因為 Microsoft 未涵蓋這些文件。