<!-- AI_TASK_START: AI标题翻译 -->
[新产品/新功能] Azure CNI 现已支持 Node Subnet IPAM 模式与 Cilium Dataplane
<!-- AI_TASK_END: AI标题翻译 -->
<!-- AI_TASK_START: AI竞争分析 -->
# 产品功能分析
## 新功能/新产品概述
Azure CNI Powered by Cilium 新增了对 Node Subnet IPAM 模式的**支持**,这是一种基于**eBPF**技术的**高性能数据平面**,旨在为 Azure Kubernetes Service (AKS) 集群提供**网络策略执行**、**深度可观察性**和**服务路由优化**。该功能主要针对非叠加网络场景(如 VNet IP 寻址模式),帮助用户从传统 CNI 迁移,同时避免 IP 地址耗尽风险。背景在于,许多 AKS 用户偏好 Node Subnet 模式以简化管理,尤其适用于小型集群或无需额外子网规划的场景。目标用户群包括寻求**灵活网络配置**的开发者和运维团队,市场定位聚焦于提升 AKS 的整体性能和兼容性,以应对云原生应用的增长需求。
## 关键客户价值
- **改进网络调试能力**:通过升级到 Azure CNI Powered by Cilium,用户可利用**Advanced Container Networking Services (ACNS)** 采集节点和 Pod 级别的请求指标,提供托管 Grafana 仪表板,简化故障排查过程,与传统 CNI 的静态 IP 过滤相比,这显著提升了调试效率,但需注意在大型集群中可能增加监控开销。
- **先进的网络策略管理**:Cilium 数据平面允许基于标签的策略而非频繁变化的 IP 地址,实现高效可扩展的网络隔离,例如默认拒绝策略,避免了传统 CNI 的手动更新需求,从而在动态 Kubernetes 环境中提供更强的安全性优势;然而,对于大规模组网,这可能要求更精确的 IP 规划以防范潜在的地址冲突。
- **简化集群部署和迁移路径**:用户可轻松创建支持 Node Subnet 的 AKS 集群,例如通过 `az aks create` 命令指定 `--network-plugin azure --network-dataplane cilium`,这与传统模式相比降低了初始设置复杂度,但需结合 VNet 使用情况进行规划,以适应不同工作负载类型。
## 关键技术洞察
- **技术独特性**:该功能基于**eBPF**扩展技术,Cilium 数据平面通过**事件驱动架构**处理网络流量,实现细粒度控制,如网络策略和可观察性,而非传统 CNI 的简单 IP 分配。工作原理涉及在内核级别注入程序,以捕获和处理数据包,从而提升性能。
- **创新点与影响**:创新在于提供无缝迁移路径,支持非叠加模式下的高性能网络,这对性能和安全性有积极影响,例如通过 ACNS 启用毫秒级指标收集,提高了集群的可用性和响应速度;然而,IP 地址利用率可能不如 Pod Subnet 模式高效,在大规模场景下面临管理挑战,如需通过 Azure CLI 监控子网使用以避免耗尽。
- **挑战与解决方式**:实现过程中,潜在挑战包括 IP 地址规划的复杂性,文档建议使用 `az rest` 命令查询子网使用情况来优化配置;总体上,这增强了 AKS 的灵活性,但用户需权衡 eBPF 的资源开销问题,以确保在高并发环境中的稳定性。
## 其他信息
文档结尾强调了持续的 AKS 发展路线图,并提供了资源链接,如 Azure CNI Powered by Cilium 的学习资料和基准测试,帮助用户进一步探索和优化网络配置,以适应未来云原生趋势。
<!-- AI_TASK_END: AI竞争分析 -->
<!-- AI_TASK_START: AI全文翻译 -->
# Azure CNI 现支持 Node Subnet IPAM 模式与 Cilium Dataplane
**原始链接:** [https://techcommunity.microsoft.com/blog/azurenetworkingblog/azure-cni-now-supports-node-subnet-ipam-mode-with-cilium-dataplane/4409359](https://techcommunity.microsoft.com/blog/azurenetworkingblog/azure-cni-now-supports-node-subnet-ipam-mode-with-cilium-dataplane/4409359)
**发布时间:** 2025-04-29
**厂商:** AZURE
**类型:** TECH-BLOG
---
Azure Networking Blog
# Azure CNI 现支持 Node Subnet IPAM 模式与 Cilium Dataplane
2025 年 4 月 29 日
Azure CNI Powered by Cilium 是一个高性能数据平面,利用扩展 Berkeley Packet Filter (eBPF) 技术来启用功能,例如网络策略执行、深度可观察性和改进的服务路由。 [Legacy CNI](<https://learn.microsoft.com/en-us/azure/aks/concepts-network-legacy-cni#azure-cni-node-subnet>) 支持 Node Subnet (Node Subnet),其中每个 Pod 从给定子网获取 IP 地址。需要 VNet (Virtual Network) IP 寻址模式(非叠加场景)的 AKS (Azure Kubernetes Service) 集群,通常建议使用 Pod Subnet 模式。然而,不面临 IP 耗尽风险的 AKS 集群可以出于传统原因继续使用 Node Subnet 模式,并将 CNI 数据平面切换为利用 Cilium 的功能。通过此功能发布,我们提供了这种迁移路径!
用户经常在 AKS 集群中使用 Node Subnet 模式,以简化使用。这种模式提供了一个选项,用户无需担心管理多个子网,尤其是在使用较小集群时。此外,让我们突出此功能解锁的一些额外好处。
## 通过高级容器网络服务改进网络调试能力
通过升级到 Azure CNI Powered by Cilium 与 Node Subnet, [高级容器网络服务](<https://learn.microsoft.com/en-us/azure/aks/advanced-container-networking-services-overview?tabs=cilium>) 开启了使用 eBPF 工具在节点和 Pod 级别收集请求指标的可能性。高级可观察性工具提供了一个托管的 Grafana 仪表板,用于检查这些指标,从而简化事件响应体验。
## 高级网络策略
Legacy CNI 的网络策略存在挑战,因为基于 IP 的过滤策略需要在 Pod IP 地址频繁变化的 Kubernetes 集群中不断更新。启用 Cilium 数据平面提供了一种高效且可扩展的管理网络策略的方法。
使用 Node Subnet 作为 IP 地址管理 (IPAM) (IP Address Management) 网络模型,创建 Azure CNI Powered by Cilium 集群。这是使用 `--network-plugin azure` 标志时的默认选项。
az aks create --name <clusterName> --resource-group <resourceGroupName> --location <location> --network-plugin azure --network-dataplane cilium --generate-ssh-keys
扁平网络可能导致 IP 地址使用效率低下。通过 [List Usage](<https://learn.microsoft.com/en-us/rest/api/virtualnetwork/virtual-networks/list-usage?view=rest-virtualnetwork-2024-05-01&tabs=HTTP>) 命令仔细规划给定 VNet 的当前使用情况有助于查看子网空间的使用。AKS 在集群创建时自动创建一个 VNet 和子网。请注意,此 VNet 的资源组基于集群的资源组、集群名称和位置生成。
从门户中的 AKS 集群 **设置** > **网络** 下,我们可以看到自动创建的资源名称。

az rest --method get \
--url https://management.azure.com/subscriptions/{subscription-id} /resourceGroups/MC_acn-pm_node-subnet-test_westus2/providers/Microsoft.Network/virtualNetworks/aks-vnet-34761072/usages?api-version=2024-05-01
{
"value": [
{
"currentValue": 87,
"id": "/subscriptions/9b8218f9-902a-4d20-a65c-e98acec5362f/resourceGroups/MC_acn-pm_node-subnet-test_westus2/providers/Microsoft.Network/virtualNetworks/aks-vnet-34761072/subnets/aks-subnet",
"isAdjustable": false,
"limit": 65531,
"name": {
"localizedValue": "Subnet size and usage",
"value": "SubnetSpace"
},
"unit": "Count"
}
]
}
要更好地理解此利用率,点击虚拟网络链接,然后访问连接设备列表。该视图还显示给定节点上使用的 IP。

总共有 87 个设备,与先前命令行输出中的子网使用情况一致。由于默认创建三个节点,每个节点的最大 Pod 计数为 30(可配置高达 250),因此 IP 耗尽不是问题,尽管较大的集群需要仔细规划。
接下来,我们将在此集群上启用高级容器网络服务 (ACNS)。
az aks update --resource-group <resourceGroupName> --name <clusterName> --enable-acns
创建默认拒绝 Cilium Network Policy。命名空间为 `_default_`,我们将使用 `_app: server_` 作为标签示例。
kubectl apply -f - <<EOF
apiVersion: cilium.io/v2
kind: CiliumNetworkPolicy
metadata:
name: default-deny
namespace: default
spec:
endpointSelector:
matchLabels:
app: server
ingress:
- {}
egress:
- {}
EOF
ingress 和 egress 下的空括号表示所有流量。接下来,我们将使用 `agnhost`,这是一个用于 Kubernetes 上游测试的网络连接实用程序,可帮助设置客户端/服务器场景。
kubectl run server --image=k8s.gcr.io/e2e-test-images/agnhost:2.41 --labels="app=server" --port=80 --command -- /agnhost serve-hostname --tcp --http=false --port "80"
获取服务器地址 IP:
kubectl get pod server -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
server 1/1 Running 0 9m 10.224.0.57 aks-nodepool1-20832547-vmss000002 <none> <none>
创建客户端,使用 agnhost 实用程序测试网络策略。请打开新终端窗口,因为这也会打开新 shell。
kubectl run -it client --image=k8s.gcr.io/e2e-test-images/agnhost:2.41 --command -- bash
从客户端测试到服务器的连接。由于网络策略为默认拒绝所有默认命名空间流量,因此预计会超时。您的 Pod IP 可能与示例不同。
bash-5.0# ./agnhost connect 10.224.0.57:80 --timeout=3s --protocol=tcp --verbose
TIMEOUT
删除网络策略。在实际中,会添加额外策略来保留默认拒绝策略,同时允许满足条件的应用程序连接。
kubectl delete cnp default-deny
从客户端 Pod 的 shell 中,验证连接现在被允许。如果成功,则没有输出。
kubectl attach client -c client -i -t
bash-5.0# ./agnhost connect 10.224.0.57:80 --timeout=3s --protocol=tcp
服务器和客户端之间的连接已恢复。其他工具如 Hubble UI 用于调试,可在 [容器网络可观察性 - 高级容器网络服务 (ACNS) 用于 Azure Kubernetes Service (AKS) - Azure Kubernetes Service | Microsoft Learn](<https://learn.microsoft.com/en-us/azure/aks/container-network-observability-concepts?tabs=cilium>) 中找到。
## 结论
构建无缝迁移路径对于 ACPC 的持续增长和采用至关重要。目标是通过提供升级路径启用 Cilium 数据平面,实现各种 IP 寻址模式下的高性能网络,从而提供一流体验。这允许根据您的 IP 地址计划灵活构建各种工作负载类型,使用 AKS 网络。请关注 [AKS 公共路线图](<https://github.com/orgs/Azure/projects/685>),以获取更多即将到来的发展。
## 资源
* 了解更多关于 [Azure CNI Powered by Cilium](<https://learn.microsoft.com/en-us/azure/aks/azure-cni-powered-by-cilium>)。
* 了解更多关于 [IP 地址规划](<https://learn.microsoft.com/en-us/azure/aks/concepts-network-ip-address-planning#ip-address-sizing>)。
* 访问 [Azure CNI Powered by Cilium 基准测试](<https://azure.microsoft.com/en-us/blog/azure-cni-with-cilium-most-scalable-and-performant-container-networking-in-the-cloud/>),查看使用 eBPF 数据平面的性能基准。
* 访问了解更多关于 [高级容器网络服务](<https://learn.microsoft.com/en-us/azure/aks/advanced-container-networking-services-overview?tabs=cilium>)。
更新于 2025 年 4 月 29 日
版本 1.0
<!-- AI_TASK_END: AI全文翻译 -->