ToB企服应用市场:ToB评测及商务社交产业平台

标题: Kmesh v0.1.0 版本发布 [打印本页]

作者: 万万哇    时间: 2024-4-13 20:37
标题: Kmesh v0.1.0 版本发布
本文分享自华为云社区《Kmesh v0.1.0 版本发布!打造极致性能的流量治理体验》,作者:云容器大未来。
Kmesh是业内首个内核级云原生流量治理引擎,通过基础软件创新帮助用户构筑云原生场景下高性能的通信基础设施。Kmesh第一个版本v0.1.0 [1]现已正式发布,用户可以在服务网格环境中使用yaml一键部署,无缝对接Istiod,通过流量治理下沉OS,实现相比 Istio Sidecar 方案转发时延降低50%+,为应用提供极致的转发性能体验。
Kmesh 介绍

Kmesh 基于 eBPF + 可编程内核技术,将流量治理下沉 OS,数据路径上无需经过代理层,实现了一个内核级 sidecarless 网格数据面。

Kmesh 关键能力:

Kmesh 的主要部件包括:
Kmesh v0.1.0关键特性

社区发布了 Kmesh 的部署镜像[2],并支持通过 yaml 一键部署 Kmesh[3];
类似Istio,Kmesh支持按namespace使能流量接管范围,如:kubectl label namespace default label istio.io/dataplane-mode=Kmesh
支持在已有sidecar形态的网格环境启用Kmesh,启用后namespace 下新创建的 Pod 流量会自动被 Kmesh 接管,而不再经过 sidecar 代理;
Kmesh支持与Istiod自动对接,且理论上遵循XDS协议的网格控制面都可以与Kmesh对接,可通过修改yaml中的 MESH_CONTROLLER 环境量指定;
支持TCP流量转发,支持HTTP1.1头域匹配、路由、灰度等,支持随机、轮询负载均衡算法;
支持根据运行环境的OS内核能力,自适应使能Kmesh特性,在无增强补丁的内核版本上,也能够以兼容模式运行Kmesh;详情参考Release Notes[1]。
性能测试

我们使用 fortio 测试了 Istio(Envoy)、Kmesh 在同等流量治理场景下的表现,同时测试了 K8s 下基于 kubeProxy 的服务通信时延作为基线参考;
不同链接数下的时延对比:

相同QPS下的CPU开销对比:

从测试结果可以看到:
想要了解详细的 demo 测试细节,可以观看我们的演示视频:
https://v.youku.com/v_show/id_XNjMyMjI1MDEzNg==.html?playMode=pugv&spm=a2hje.13141534.card_3.d_1_0&scm=20140719.manual.239312.video_XNjMyMjI1MDEzNg==
Kmesh关键技术剖析

内核级流量编排运行时

微服务通信一般先建立链接,再发送业务报文,如果想要无感的对业务报文做编排处理,通常需要对流量进行劫持,编排完成后再基于调整后的报文继续转发,这也是现在 Proxy 代理的实现;Kmesh 考虑随流完成治理工作,将链路建立时机推迟到业务报文发送阶段,以实现更高的编排处理性能。
pre_connect 流程挂载 bpf prog,若当前访问的目标地址在 xds 的 listener 范围,则调用 bpf_setsockopt 通过 TCP_ULP 将当前 socket 的 tcp proto hook重载到 kmesh_defer 的内核模块实现;
kmesh_defer 内核模块重写了 connect/send hook(在原生 hook 上做了增强):
整个治理过程大致如下图所示:

XDS规则管理

xds 模型是一颗层次化的树型规则表达,且不同版本模型定义可能会有调整,Kmesh 需要将模型信息转换成 eBPF map 存储,同时保持模型规则之间的层次关系;

具体过程:


对于 map 记录的 value 成员,如果是指针变量(涉及引用其他数据结构),通过 inner-map 存储指向的数据区域:
流量治理编排实现

xds 的治理规则复杂,层层匹配,超过了单个 eBPF 程序的复杂度限制;Kmesh 基于 eBPF Tail Calls 特性,将治理过程拆分成多个独立的 eBPF progs,具备较好的扩展性;

展望

Kmesh 是一种基于eBPF+可编程内核实现的高性能流量治理引擎,与业界方案相比,具有更高的转发性能和更低的资源开销;在无增强补丁的内核版本上,可以以兼容模式运行Kmesh,如果想要使用Kmesh完整的治理能力,当前 openEuler 23.03[4]版本已经原生支持,除此之外的其他操作系统需要基于增强的 patch 构建[5]。
Kmesh 正在逐步完善,成为一个更受欢迎的流量治理引擎还有很多工作要做,欢迎大家试用 Kmesh v0.1.0 版本,并持续关注 Kmesh 社区,也期待您的共同参与。
参考链接
[1] Kmesh v0.1.0:https://github.com/kmesh-net/kmesh/releases
[2] Kmesh的部署镜像:https://github.com/orgs/kmesh-net/packages
[3] 一键部署Kmesh:https://github.com/kmesh-net/kmesh?tab=readme-ov-file#quick-start
[4] openEuler 23.03版本:https://repo.openeuler.org/openEuler-23.03/
[5] 基于增强的patch构建:https://github.com/kmesh-net/kmesh/blob/main/docs/kmesh_kernel_compile.md
[6] Kmesh社区地址:https://github.com/kmesh-net/kmesh
 
点击关注,第一时间了解华为云新鲜技术~
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4