本文分享自华为云社区《Kmesh进入CNCF 云原生全景图》 ,作者:云容器大未来。
近日,Kmesh 正式进入 CNCF 云原生全景图,位于 Service Mesh 类别下。
近年来服务网格逐步流行,但sidecar架构在资源开销、升级部署、时延等方面仍存在挑战,如何消减代理开销,构建sidecarless的服务网格已成为业界共识。
Kmesh从立项之初,就瞄准网格痛点问题,创新性的提出业内首个内核级sidecarless流量治理引擎,通过eBPF + 可编程内核技术将L4~L7治理下沉OS,治理过程无需经过代理组件,实现服务网格内服务通信路径多跳变一跳,彻底消除代理开销,真正实现网格治理sidecarless化。
Kmesh架构图
高性能
内核中原生支持 L4~L7 流量治理功能,网格内微服务转发时延降低60%,微服务启动性能提升40%;
低开销
微服务中无需部署sidecar,服务网格数据面开销降低70%;
高可用
内核流量治理不会截断连接,组件升级、重启完全不影响业务已有连接;
零信任网络
支持基于内核mTLS构建零信任网络;
安全隔离
基于eBPF的虚机安全,且具备cgroup级治理隔离;
灵活治理模式
除了全内核治理形态,Kmesh还支持四七层治理分离架构,内核eBPF和waypoint组件分别处理L4和L7流量,允许用户逐步采用Kmesh,从而实现从无网格->安全L4治理->L7治理的平稳过渡;
平滑兼容
与Istio无缝集成,支持xDS协议标准。目前同时支持Istio API和Gateway API,可以与现有sidecar协同工作。
Kmesh首先是一种Sidecarless的网格架构模型,目前Sidecarless模式广受欢迎。无论是Istio社区还是Cilium社区都在在采用这种架构模型,另外广大用户非常认可Sidecarless。与Sidecar相比,Sidecarless没有资源占用的开销,同时解耦应用和代理的生命周期,并且打破一一绑定的关系,部署、维护更加简单。
Kmesh创新性的采用eBPF技术在内核态进行流量治理,使得流量的治理随流进行。好处是不会截断业务的连接,大大减少了流量路径上的连接数,进而降低应用访问的时延。
在用户态进行流量治理的一个比较大的弊端是组件的升级会导致业务的流量受损,Kmesh通过可编程内核技术,完好的避开了这一点。目前Kmesh这方面具有业界压倒性的优势,我们充分看到了eBPF的无限可能,未来基于eBPF可以进行更多的网络创新。
Kmesh还提供了另一种高级的模式,通过四七层分离,提供丰富的L7治理功能。四七层分离能够提供更加细粒度的物理隔离,不同租户,不同命名空间或者不同的服务均可以划分,独享七层代理waypoint。waypoint还可以根据业务流量,进行动态扩缩容,方便提供全托管。我们看到waypoint不同于传统的中心式网关,不存在单点故障。
由此,我们坚定的认为未来Sidecarless模式的理想架构,一定是eBPF技术和waypoint组合,既要减少资源消耗,又要降低时延。在节点上通过eBPF进行L4和简单的L7流量治理,至于高级的、复杂的七层协议则转发到waypoint治理。
Kmesh由华为发起, openEuler社区孵化,当前作为独立项目在GitHub托管,为用户提供极致性能的流量治理技术方案。
华为是中国最早参与服务网格的厂商,早在2018年华为就开始投入Istio社区,常年在Istio社区贡献保持亚洲第一,并且自首届以来持续拥有社区Steering Committee席位。
华为在服务网格领域的探索历程
Kmesh社区地址:https://github.com/kmesh-net/kmesh
Cloud Native Computing Foundation,云原生计算基金会(以下简称CNCF)是一个开源软件基金会,它致力于云原生(Cloud Native)技术的普及和可持续发展。云原生技术通过一系列的软件、规范和标准帮助企业和组织,在现代的动态环境(如公共云、私有云和混合云)中构建和运行敏捷的、可扩展的应用程序。
CNCF 发布了云原生全景图(CNCF Landscape),旨在帮助企业和开发人员快速了解云原生体系的全貌,帮助用户选择云原生实践中的恰当的软件和工具,因此受到广大开发者和使用者的关注和重视。
[1]CNCF Landscape:https://landscape.cncf.io/
[2]Ambient Mesh介绍:https://istio.io/latest/blog/2022/introducing-ambient-mesh/
[3]华为云ASM:https://support.huaweicloud.com/asm/index.html
[4]Kmesh快速上手:https://kmesh.net/en/docs/setup/quickstart/