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/