规划 Azure Kubernetes 服务(AKS)的 Pod 网络

本文介绍 Azure Kubernetes 服务(AKS)的 Pod 网络选项。 我们首先提出一个问题来帮助指导你的规划,然后提供选项、建议和最佳做法。

是否需要直接 Pod IP 访问?

Pod 网络控制 Pod 如何分配 IP 地址,并定义 Pod 如何相互通信、群集节点和群集外部的目标。 Kubernetes 通过 容器网络接口 (CNI) 插件提供 Pod 网络,该插件负责管理 Pod IP 地址和网络连接。

设置 Pod 网络时,需要规划 IP 地址管理(IPAM)路由和传输(数据平面)。

IP 地址管理 (IPAM) 选项

设置 IPAM 时,可以选择具有 Azure CNI Overlay覆盖网络模型,或具有 Azure CNI Pod 子网Azure CNI 节点子网平面网络模型

IPAM 选项 网络组件示意图 特性和功能
Overlay网络模型(采用 Azure CNI Overlay) 覆盖网络模型的网络组件关系图的屏幕截图。 • Pod IP 地址来自不属于 VNet 空间的叠加网络范围。
• 高度可缩放的网络, 最多包含 5,000 个节点250,000 个 Pod
• 在所有群集中重复使用 Pod 覆盖空间,而不会发生冲突。 诸如 VNet 对等互连或 ExpressRoute 直接连接等可能会导致与专用 IP 空间的冲突
• 双堆栈 (IPV4/IPV6) 支持。
• 无法直接从群集外部访问 Pod。
平面网络模型(使用 Azure CNI Pod 子网 节点子网) 平面网络模型的网络组件关系图的屏幕截图。 • 节点和 Pod IP 来自 VNet 空间。
• 可以直接从群集外部访问 Pods。
• Azure CNI Pod 子网选项包括用于效率的 动态 IP 分配 或用于缩放的 静态块分配

平面网络模型选项的注意事项

在确定 具有动态 IP 分配的 Azure CNI Pod 子网具有静态块分配的 Azure CNI Pod 子网Azure CNI 节点子网之间,请注意以下注意事项:

扁平化网络模型选项 注意事项
具有动态 IP 分配的 Azure CNI Pod 子网 • 涉及一些复杂性和管理。 需要为节点和 Pod 分配一个子网,并确保正确限定范围以支持所需的规模。
• 限制 为 64,000 个 IP
具有静态块分配的 Azure CNI Pod 子网 • 需要仔细规划,因为需要为 Pod 分配特定范围的 IP,并确保它不会与其他子网重叠。
• 最多可以获取 1,000,000 个 IP
• IP 可能无法高效使用,这可能导致被破坏。
Azure CNI 节点子网 • AKS 为你管理子网,简化设置。
• 限制 为 64,000 个 IP

路由和传输(数据平面)选项

设置数据平面时,可以在由 Cilium eBPF 数据平面、Azure IPTables 数据平面BYO CNI 提供支持的 Azure CNI 之间进行选择:

数据平面选项 特性和功能
由 Cilium 提供支持的 Azure CNI • 提高了扩展性和性能。
• 内置网络策略管理器(NPM)。
• 增强的网络策略,例如使用高级容器网络服务的 FQDN 筛选。
Azure IPTables • 为网络策略管理器安装 CalicoAzure NPM(不建议 )。
• 支持所有 Kubernetes 规范的网络策略。
BYO CNI • 未安装托管 CNI 插件 - 可以使用支持 AKS 的任何选项。
• Microsoft 不支持 任何与 CNI 相关的问题。

Recommendations

我们的一般建议是使用 Azure CNI 重叠网络。 如果需要 直接 IP 访问并具有效率或规模要求,请考虑使用 具有动态 IP 分配的 Azure CNI Pod 子网具有静态块分配的 Azure CNI Pod 子网。 如果需要 直接 Pod IP 访问并想要简化管理,请考虑使用 Azure CNI 节点子网