阿里云基于Cilium的高性能云原生网络

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 你知道吗,这个方案基于Cilium & eBPF来实现。在此之前,Google的GKE和Anthos也宣布基于Cilium+eBPF实现了新的容器网络数据面V2方案。但阿里云的方案会有所不同,阿里云采用Terway IPVLAN+Cilium的eBPF结合的方式。

Cilium 创始人兼CTO Thomas Graf 近日撰文《How Alibaba Clouduses Cilium for High-Performance Cloud-Native Computing?》, 本文翻译自作者的英文博客。感谢Thomas Graf以及其他更多的客户,阿里云容器服务团队随时欢迎听到更多客户反馈。

1.png

近期,阿里云团队在SIG Cloud-Provider-Alibaba的会议上介绍了阿里云容器服务的新的高性能容器网络方案并且发布了一篇博客介绍。你知道吗,这个方案基于Cilium & eBPF来实现。在此之前,Google的GKE和Anthos也宣布基于Cilium+eBPF实现了新的容器网络数据面V2方案。但阿里云的方案会有所不同,阿里云采用Terway IPVLAN+Cilium的eBPF结合的方式,文章下面我们会详细分析Terway CNI(阿里云的CNI插件)的细节实现以及在博客中的测试数据。

和其他云厂商一样,阿里云也提供了ENI(弹性网卡)的产品来暴露底层IAAS层的SDN(软件定义网络)的能力。对于K8S的Pod来说,基于它可以实现云原生的虚拟化网络,而不需要再对容器网络再做一层虚拟化来降低性能的损耗以及减少网络复杂度。

云厂商的IAAS层网络已经具备虚拟化和SDN的能力,如果底层虚拟化网络的能力直接给Pods去使用,将能显著降低性能的损耗。

对于阿里云,容器网络模型如下图所示:
2.png
(源自: https://www.alibabacloud.com/blog/how-does-alibaba-cloud-build-high-performance-cloud-native-pod-networks-in-production-environments_596590)

为了实现这个模型,CNI层面直接与阿里云的API交互来申请Pod所需的底层ENI网络资源。阿里云自研了Terway的CNI插件来实现这样的模型。在阿里云官方的博客中有详细的内部实现的介绍和遇到的挑战。这里我们重点关注在他们如何使用IPVLAN和eBPF来提升Kubernetes的Service和NetworkPolicy的性能和扩展性。

使用IPVLAN来实现更好的网络可扩展性和性能

单个ENI可以给Pod独占或者给多个Pod去共享。当ENI被多个Pod共享时,就需要对包做一些路由决策来确保Pod的流量路由到其对应的ENI上面。使用共享ENI的方式,一个ENI可以虚拟化出10-20个IP,从而可以大大增加节点上的Pod的部署密度,但是缺点是需要引入bridge或者策略路由带来额外的性能开销。后面的性能对比中就能看到具体的开销。

为了提升共享ENI的性能,IPVLAN就是一个很好的选择,IPVLAN可以将ENI很轻量的虚拟化出多个子接口来连接多个Pod到单个ENI上面。Terway的CNI通过IPVLAN来降低共享ENI的开销,并且结合Cilium在IPVLAN的网络模式下提供了高效的NetworkPolicy和Service的实现。并且将实现向Cilium官方提了 pull request.
3.png
(源自: https://www.alibabacloud.com/blog/how-does-alibaba-cloud-build-high-performance-cloud-native-pod-networks-in-production-environments_596590)

下面是不同模式的性能对比,其中还包含了基于云原生的ENI网络与基于overlay的Flannel的性能优势。
a.png
(源自: https://www.alibabacloud.com/blog/how-does-alibaba-cloud-build-high-performance-cloud-native-pod-networks-in-production-environments_596590)

你不一定要选择其中一个模型,可以根据需要对高性能的选择调度到独占ENI,对于其他的Pod使用共享ENI的模式。

**使用eBPF来解决Kubernetes Service和NetworkPolicy的扩展性问题
**
很长一段时间,Kubernetes的标准的kube-proxy的实现是采用iptables模式,由于iptables的顺序匹配,导致这种解决方案的扩展性非常受限。
5.png

(源自: https://www.alibabacloud.com/blog/how-does-alibaba-cloud-build-high-performance-cloud-native-pod-networks-in-production-environments_596590)

可以看到当服务数量增加到一定阈值后,延迟就会大幅增加。更严重的是,由于服务表项在iptables规则链中匹配的顺序不同,会导致服务访问的首包的延迟会随机的变差。

基于这些原因,所以阿里云才会基于eBPF来优化Kubernetes的可扩展性。

效果怎么样呢?下面是阿里云团队测试的性能对比。基于eBPF的方案的网络的性能和可扩展性优于kube-proxy的iptables和IPVS模式:
6.png

(源自: https://www.alibabacloud.com/blog/how-does-alibaba-cloud-build-high-performance-cloud-native-pod-networks-in-production-environments_596590)

通过eBPF简化链路,性能显著提升,相对iptables模式提升了32%,相对IPVS模式提升62%。

与Kubernetes Server类似,基于eBPF同样可以优化Kubernetes的NetworkPolicy。
7.png

(源自: https://www.alibabacloud.com/blog/how-does-alibaba-cloud-build-high-performance-cloud-native-pod-networks-in-production-environments_596590)

框框中的"BPF-agent"就是独立于Terway CNI之外运行的Cilium的agent,用于提供Kubernetes的Service和NetworkPolicy实现:

我们使用 Cilium 作为节点上的 BPF-agent 去配置容器网卡的 BPF 规则,已贡献 Terway 相关适配:https://github.com/cilium/cilium/pull/10251
8.png

(源自: https://www.alibabacloud.com/blog/how-does-alibaba-cloud-build-high-performance-cloud-native-pod-networks-in-production-environments_596590)

遗憾的是,在这一篇文章中阿里云没有提供最终的优化的对比。Cilium团队早期做过Cilium在IPVLAN和veth模式的对比博客,可以作为粗略的参考。
总结
我们非常高兴和欢迎阿里云加入和贡献到Cilium社区,如果需要了解更多可以参考如下内容:
Cilium Overview
Cilium GitHub
How Does Alibaba Cloud Build High-Performance Cloud-Native Pod Networks in Production Environments?
What is eBPF?

作者:Thomas Graf Cilium的联合创始人和CTO以及Isovalent(Cilium背后的公司)的联合创始人。在此之前,他在Red Hat和思科从事Linux内核和中断开源项目的研发工作。

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
4天前
|
Cloud Native Serverless 开发者
阿里云助力开发者创新:探索云原生技术的新境界
阿里云开发者社区推动云原生技术发展,提供丰富产品(如容器服务、Serverless、微服务架构、服务网格)与学习平台,助力企业数字化转型。开发者在此探索实践,共享资源,参与技术活动,共同创新,共创云原生技术新篇章。一起加入,开启精彩旅程!
259 2
|
4天前
|
Cloud Native 关系型数据库 OLAP
云原生数据仓库产品使用合集之阿里云云原生数据仓库AnalyticDB PostgreSQL版的重分布时间主要取决的是什么
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。
|
2天前
|
人工智能 算法 Serverless
上海站丨阿里云云原生技术实践营—— Serverless + AI 技术专场开启报名!
"飞天技术沙龙——Serverless 技术实践营"将于2024年5月31日举行,聚焦Serverless在AI中的应用。活动包括演讲、实操,探讨Serverless演进趋势、AI应用开发及降低成本等议题。限额80人,报名审核制,有周边礼品。扫描链接<https://summit.aliyun.com/Serverless2024shanghai>报名,现场还有大奖和证书领取。
上海站丨阿里云云原生技术实践营—— Serverless + AI 技术专场开启报名!
|
4天前
|
Cloud Native 关系型数据库 分布式数据库
PolarDB是阿里云自主研发的关系型云原生数据库
【5月更文挑战第14天】PolarDB是阿里云自主研发的关系型云原生数据库
40 3
|
4天前
|
存储 Cloud Native 对象存储
AutoMQ:如何基于阿里云计算与存储产品实现云原生架构升级
AutoMQ[1] 是新一代基于共享存储架构实现的云原生 Kafka。得益于其存算分离的共享存储架构,通过和阿里云合作,深度使用阿里云可靠、先进的云服务如对象存储OSS、块存储 ESSD、弹性伸缩ESS以及抢占式实例实现了相比 Apache Kafka 10倍的成本优势并且提供了自动弹性的能力。
83405 4
AutoMQ:如何基于阿里云计算与存储产品实现云原生架构升级
|
4天前
|
消息中间件 人工智能 监控
|
4天前
|
负载均衡 网络协议 应用服务中间件
【亮剑】在Linux中构建高可用性和高性能网络服务的负载均衡工具HAProxy、Nginx和Keepalived。
【4月更文挑战第30天】本文介绍了在Linux中构建高可用性和高性能网络服务的负载均衡工具HAProxy、Nginx和Keepalived。HAProxy是一个高性能的开源TCP和HTTP负载均衡器,适合处理大量并发连接;Nginx是一个多功能Web服务器和反向代理,支持HTTP、HTTPS和TCP负载均衡,同时提供缓存和SSL功能;Keepalived用于监控和故障切换,通过VRRP实现IP热备份,保证服务连续性。文中详细阐述了如何配置这三个工具实现负载均衡,包括安装、配置文件修改和启动服务,为构建可靠的负载均衡系统提供了指导。
|
4天前
|
存储 Cloud Native 大数据
国内独家|阿里云瑶池发布ClickHouse企业版:云原生Serverless新体验
全面升级为云原生架构,支持云原生按需弹性Serverless能力,解决了长期困扰用户的集群扩展效率和平滑性问题。
国内独家|阿里云瑶池发布ClickHouse企业版:云原生Serverless新体验
|
4天前
|
Rust 前端开发 安全
【专栏】WebAssembly将支持更多语言,结合低代码平台
【4月更文挑战第27天】WebAssembly是种虚拟机格式,用于在浏览器中运行编译后的C/C++、Rust等语言代码,提供高性能、高可移植性和安全性。其优势在于更快的执行速度、跨平台兼容及安全的沙箱环境。广泛应用在游戏开发、图形处理、计算机视觉等领域。未来,WebAssembly将支持更多语言,结合低代码平台,优化开发流程,同时应对优化编译和安全性的挑战,引领高性能网络应用新时代。