cilium Service Mesh

Service Mesh 介绍

Service Mesh 关注于集群内部的微服务通信、控制和监控。它提供诸如负载均衡、故障恢复、安全性增强、监控和跟踪等功能。Service Mesh 可以帮助管理复杂的微服务架构,实现服务之间的可靠通信,并提供各种附加功能来增强系统的可观测性和安全性。
随着分布式应用程序的引入,额外的可见性、连接性和安全性要求也随之浮现。应用程序组件通过跨云和本地边界的不可信网络进行通信,需要负载平衡来理解应用程序协议,弹性变得至关重要,并且安全性必须发展到发送者和接收者可以验证彼此身份的模型。在分布式应用程序的早期,这些需求是通过将所需的逻辑直接嵌入到应用程序中来解决的。服务网格从应用程序中提取这些功能,并将它们作为基础设施的一部分提供给所有应用程序使用,因此不再需要更改每个应用程序。

Service Mesh 功能

弹性连接:服务与服务之间的通信必须能够跨越云、集群和场所等边界。通信必须具有弹性和容错能力。

L7 流量管理:负载平衡、速率限制和弹性必须支持 L7(HTTP、REST、gRPC、WebSocket 等)。

基于身份的安全性:依靠网络标识符来实现安全性已经不够了,发送和接收服务都必须能够基于身份而不是网络标识符来相互验证。

可观察性和跟踪:跟踪和指标形式的可观察性对于理解、监控应用程序稳定性、性能和可用性以及进行故障排除至关重要。

透明度:功能必须以透明的方式提供给应用程序,即无需更改应用程序代码。

Service Mesh 优势

Cilium Service Mesh 通过使用 eBPF 将网格层直接集成到内核中,重新定义了传统的服务网格框架,从而消除了对 sidecar 代理的需求。在网络和应用程序协议层上运行来提供连接、负载平衡、安全性和可观察性,从而与服务网格概念保持良好一致。对于所有网络处理,包括 IP、TCP 和 UDP 等协议,Cilium 使用 eBPF 作为高效的内核数据路径。 HTTP、Kafka、gRPC、DNS 等应用层协议通过 Envoy 等代理进行解析。

控制平面选项

Cilium Service Mesh为用户提供了控制平面选项,以实现复杂性和丰富性的理想平衡。这些选项包括简化的选项,如Ingress和Gateway API,更丰富的选项,例如使用Istio,以及通过Envoy CRD实现的Envoy的全部功能。用户可以根据自身需求和偏好选择最适合其情况的控制平面选项,以实现所需的功能和性能平衡。

Service Mesh 演进

cilium Service Mesh 和 sidecar 对比

通过 eBPF 实现卓越的网络性能

Cilium 的核心是 eBPF,这是一项内置于 Linux 内核中的革命性技术。借助 eBPF,Cilium 提供闪电般快速、高效且可扩展的网络。这绕过了传统代理的性能缺陷,使服务之间能够进行直接有效的通信。

Service Mesh 支持 eBPF

流量治理
-  L3/L4转发和负载均衡
-  金丝雀部署,拓扑感知路由
-  多集群
安全
-  网络策略
-  mTLS
可观测性
-  跟踪,OpenTelemetry和指标
-  HTTP, TLS, DNS, TCP, UDP, …

Service Mesh 不支持 eBPF

流量治理
-  L7 Load-balancing & Ingress
弹性
-  重试,L7层 速率限制
安全
-  TLS Termination & Origination

参考文档

https://docs.cilium.io/en/stable/network/servicemesh/

posted @ 2024-05-10 15:17  小吉猫  阅读(122)  评论(0编辑  收藏  举报