首页 > 其他分享 >Istio和Envoy在服务网格中的架构

Istio和Envoy在服务网格中的架构

时间:2023-02-18 17:36:31浏览次数:47  
标签:服务 Envoy Istio 网格 Listener Cluster 过滤器

分两部分来分析,首先是Istio组件Pilot与Envoy的交互过程。

1)Pilot使用client-go的Informer组件连接API Server获取集群中所有服务的Service和对应的Endpoints信息,这样就完成了服务的发现。

2)Pilot也会从API Server中获取用户自定义的VirtualService、DestinationRule等Istio的CRD资源对象。这样就获取了用户自定义的服务治理策略。

3)Pilot将服务的Endpoints信息和服务治理策略转化成Envoy能够识别的格式,并下发给Envoy代理。

通过上面的流程,Istio的控制面组件Pilot、数据面组件Envoy和Kubernetes是如何一起工作的。

接下来分析图中一个下游客户端的请求到达Envoy后是如何被处理的,在这之前先了解Envoy的4种核心资源。

1.Listener

Listener是Envoy打开的一个端口,用来接受客户端发起的请求。多个Listener之间是相互隔离的。Listener除了监听端口以外还会配置L3或L4的过滤器。它的配置使用xDS(Envoy动态获取配置的传输协议,是一类发现服务的总称)中的LDS(Listener Discovery Service,监听器发现服务)。

2.Cluster

Cluster是对上游服务的抽象,每个上游服务都被抽象为一个Cluster。Cluster的配置主要有超时时间、连接池、Endpoints等信息。它的配置使用xDS中的CDS(Cluster Discovery Service,集群发现服务)和EDS(Endpoint Discovery Service,端点发现服务)。

3.Route

上下游之间的桥梁,Listener负责监听并接收来自下游客户端的请求,Cluster负责将流量转发给具体的上游服务。而Route则决定了Listener接收到的流量要发送给下游的哪个Cluster。它定义了数据的分发规则并负责Virtual Host(虚拟主机)的定义,也负责HTTP头的增加、删除、更改等。此外它也负责超时重试。它的配置使用xDS中的RDS(Route Discovery Service,路由发现服务)。

4.Filter

在Istio中习惯叫它Envoy Filter。它类似一个插件机制,让用户可以在不侵入源码的基础上对Envoy做各个方面的增强。Envoy通过它获得了强大的扩展能力,理论上Envoy利用Filter的机制可以实现任何协议的支持以及协议之间的转换,可以实现对流量的全方位定制和修改。

·监听过滤器(Listener Filter)主要负责将数据交给L3/L4的网络过滤器。

·网络过滤器(Network Filter)主要负责网络连接的处理,工作在L3/L4。图中展示了目前Envoy支持的网络过滤器。目前有些Envoy Filter还不成熟。

·HTTP过滤器主要负责HTTP流量的处理,在图中我们可以看到,HTTP过滤器是由特殊的网络过滤器HTTP Connection Manager管理的。

标签:服务,Envoy,Istio,网格,Listener,Cluster,过滤器
From: https://www.cnblogs.com/muzinan110/p/17133121.html

相关文章