<!-- AI_TASK_START: AI标题翻译 -->
[解决方案] 利用Cilium驱动的Azure CNI实现高规模Kubernetes网络
<!-- AI_TASK_END: AI标题翻译 -->
<!-- AI_TASK_START: AI竞争分析 -->
# 解决方案分析
## 解决方案概述
Azure CNI Powered by Cilium 是一种针对 Kubernetes 集群网络的解决方案,旨在提升 **pod 网络** 和 **安全功能** 的效率。该方案通过整合 Azure CNI 的控制平面与 Cilium 的 **eBPF** 数据平面,解决 Kubernetes 用户在高规模网络中的性能和安全挑战。背景在于,Kubernetes 集群常面临网络延迟、吞吐量瓶颈和安全管理问题,尤其在分布式应用场景下。该解决方案适用于大规模容器化环境,如云计算平台中的微服务架构,满足行业对高效网络和可观测性的需求。
## 实施步骤
1. 部署 Azure CNI Powered by Cilium
- 在 Kubernetes 集群中配置 Azure CNI 插件,确保其与 Cilium 的 **eBPF** 数据平面集成。通过 Azure 门户或命令行工具(如 `az` CLI)启用该功能,目标是建立高效的网络基础架构。
- 技术原理:eBPF 允许在 Linux 内核中运行自定义代码,实现高效包处理和灵活策略管理。
2. 启用 CiliumEndpointSlice 功能
- 在 Kubernetes 版本 1.32 或更高版本中,激活 CiliumEndpointSlice 以批量处理 **CiliumEndpoints** 更新,从而减少控制平面负载。
- 理由:这基于观察到传统 CRD 方法在大型集群中导致性能瓶颈,通过批量更新逻辑衔接,提高整体系统稳定性。
3. 配置网络安全和可观测性
- 应用 **Advanced Network Security features** 和 **Advanced Network Observability suite**,如基于 DNS 的网络策略和监控工具。
- 步骤逻辑:先确保 eBPF 数据平面运行后,再配置这些特性,以逐步优化网络性能和诊断能力。
## 方案客户价值
- **高性能网络**:通过 eBPF 实现高效包处理,显著降低网络延迟和提升吞吐量,例如 *平均 API 服务器响应延迟降低 50%*,从 ~1.5 秒降至 ~0.25 秒,实现机制在于减少控制平面负载,从而改善分布式应用的效率,与传统 CNI 方案相比,减少了瓶颈风险。
- **增强安全**:启用基于 DNS 的网络安全策略,简化流量管理,相比传统 IaaS 架构,提供更精细的访问控制,但可能在复杂策略下增加配置复杂度。
- **更好可观测性**:集成 eBPF 监控工具,提供详细的诊断和跟踪,支持更快的问题定位,例如 *pod 启动延迟降低 60%*,在高并发场景中提升用户体验和应用可靠性。
## 涉及的相关产品
- **Azure CNI**:Azure 提供的容器网络接口,负责控制平面管理,在方案中确保 Kubernetes 集群的网络配置和集成。
- **Cilium**:基于 eBPF 的数据平面组件,提供高性能网络和安全功能,支持 pod 通信和策略执行。
- **eBPF**:Linux 内核技术,作为核心引擎,驱动 Cilium 的高效处理,在方案中实现低延迟和高吞吐量的网络功能。
## 技术评估
该解决方案的技术先进性体现在 eBPF 的应用上,可行性高,尤其在 Azure 环境中的大规模 Kubernetes 集群,但需考虑适用范围限于支持 eBPF 的 Linux 内核版本。优势包括显著的性能提升(如 *in-cluster 网络延迟降低 80%*),通过 CiliumEndpointSlice 缓解控制平面负载,适合高流量场景;然而,可能的局限性是,在极大规模组网时,eBPF 配置的复杂性可能增加运维挑战,尽管测试显示整体可靠性提升。
<!-- AI_TASK_END: AI竞争分析 -->
<!-- AI_TASK_START: AI全文翻译 -->
# 使用 Azure CNI 驱动的 Cilium 实现高规模 Kubernetes 网络
**原始链接:** [https://techcommunity.microsoft.com/blog/azurenetworkingblog/high-scale-kubernetes-networking-with-azure-cni-powered-by-cilium/4407234](https://techcommunity.microsoft.com/blog/azurenetworkingblog/high-scale-kubernetes-networking-with-azure-cni-powered-by-cilium/4407234)
**发布时间:** 2025-04-23
**厂商:** AZURE
**类型:** TECH-BLOG
---
Azure 网络博客
# 使用 Azure CNI 驱动的 Cilium 实现高规模 Kubernetes 网络
2025 年 4 月 23 日
Kubernetes (Kubernetes) 用户拥有多样化的集群网络需求,其中最重要的是高效的 pod 网络和强大的安全功能。Azure CNI (Container Networking Interface) 由 Cilium 驱动的解决方案,通过整合 Azure CNI 的控制平面和 Cilium 的 eBPF (extended Berkeley Packet Filter) 数据平面,满足这些需求。
Cilium 通过利用 eBPF 的强大功能,实现高性能网络和安全。eBPF 是一种革命性的 Linux 内核技术,允许在 Linux 内核中执行自定义代码,从而提供灵活性和效率。这体现在:
- 高性能网络:eBPF 实现高效的数据包处理,降低延迟并提升吞吐量。
- 增强安全:Azure CNI (AzCNI) 由 Cilium 驱动,通过基于 DNS 的网络安全策略,轻松管理和保护网络流量(利用[高级网络安全功能](<https://learn.microsoft.com/en-us/azure/aks/how-to-apply-fqdn-filtering-policies?tabs=cilium>))。
- 更好的可观测性:我们的 eBPF 基础的[高级网络可观测性套件](<https://learn.microsoft.com/en-us/azure/aks/container-network-observability-how-to?tabs=cilium>) 提供详细的监控、跟踪和诊断工具,供集群用户使用。
## 引入 CiliumEndpointSlice
高效的 CNI 数据平面对于低延迟、高吞吐量的 pod 通信至关重要,这能提升分布式应用的效率和用户体验。尽管 Cilium 的 eBPF 驱动的数据平面已提供高性能网络,我们仍寻求进一步提升其可扩展性和性能。为此,我们启用了数据平面的新配置功能 CiliumEndpointSlice,从而实现:
- 降低 Kubernetes (Kubernetes) 控制平面的流量负载,导致控制平面内存消耗减少和性能提升。
- 加快 pod 启动延迟。
- 降低集群内网络延迟,提升应用性能。
特别是,该功能改进了 Azure CNI 由 Cilium 驱动的管理 pod 方式。之前,Cilium 使用自定义资源定义 (CRDs) 称为 CiliumEndpoints 来管理 pod。每个 pod 都有一个关联的 CiliumEndpoint,其中包含 pod 的状态和属性信息。Cilium Agent(数据平面的核心组件)在每个节点上运行,并监视这些 CiliumEndpoints 以获取 pod 更新信息。我们观察到,这种行为会给控制平面带来显著压力和负载,尤其是在大型集群中,导致性能瓶颈。
为了缓解控制平面的负载,我们引入了 CiliumEndpointSlice,该功能将 CiliumEndpoints 及其关联更新批量处理。这减少了传播到控制平面的更新数量,从而大大降低大规模下过载控制平面的风险,确保集群平稳运行。
### 性能测试
我们对启用了和未启用 CiliumEndpointSlice 的 Azure CNI 由 Cilium 驱动进行了性能测试。测试在以下集群上进行:
- 1000 个节点 (Standard_D4_v3)
- 20,000 个 pod(即每个节点 20 个 pod)
- 1 个服务,包含 4000 个后端
- 800 个服务,每个包含 20 个后端
测试涉及重复以下操作:
#### 平均 API 服务器响应性
此指标测量 kube-apiserver 对 LIST 请求(控制平面最耗费资源的请求类型之一)的平均延迟。启用 CiliumEndpointSlice 后,我们观察到延迟惊人下降 50%,从平均约 1.5 秒降至约 0.25 秒!对于集群用户,这意味着更快处理发送到 kube-apiserver 的查询,从而提升性能。

#### pod 启动延迟
此指标测量 pod 被报告为运行所需的时间。启用 CiliumEndpointSlice 后,pod 启动延迟下降超过 60%,允许更快部署和扩展应用。
#### 集群内网络延迟
这是一个关键指标,测量从探测器 pod 到服务器的 ping 延迟。观察到延迟下降超过 80%。这种延迟减少转化为更好的应用性能。

Azure CNI 由 Cilium 驱动,提供了一个强大的 eBPF 基础的 Kubernetes (Kubernetes) 网络和安全解决方案。从 Kubernetes (Kubernetes) 版本 1.32 开始启用 CiliumEndpointSlice。
<!-- AI_TASK_END: AI全文翻译 -->