一张图理解Envoy

Envoy 是 Istio 数据面的核心组件,已Sidecar的模式同应用部署在一个Pod中。
下图展示了Envoy配置流程:


一张图理解Envoy

  • Pilot-agent负责Envoy生命周期管理。它根据启动参数和K8S API Server中的配置信息生成Envoy的初始配置文件envoy-rev0.json,该文件告诉Envoy从xDS server中获取动态配置信息,并配置了xDS server的地址信息,即控制面的Pilot。
  • Pilot-agent使用envoy-rev0.json启动Envoy进程。
  • Envoy根据初始配置获得Pilot地址,采用xDS接口从Pilot获取到Listener,Cluster,Route等动态配置信息。
  • Envoy根据获取到的动态配置启动Listener,并根据Listener的配置,结合Route和Cluster对拦截到的流量进行处理。

Envoy通过xDS API进行动态配置。xDS是一类发现服务的总称,包含LDS、RDS、CDS、EDS及SDS。

  • LDS:Listener发现服务。Listener监听器控制Envoy启动端口监听(目前只支持TCP),并配置 L3或L4层过滤器,在网络连接到达后,由网络过滤器堆栈开始处理。
  • RDS:Route发现服务,用于Envoy HTTP连接管理器动态获取路由配置。路由配置包含HTTP头修改(增加、删除HTTP头键值)、Virtual Hosts(虚拟主机)及Virtual Hosts定义的各个路由条目。
  • CDS:Cluster发现服务,用于动态获取Cluster信息。Envoy Cluster管理器管理着所有的上游Cluster。Envoy从Listener(针对TCP协议)或Route(针对HTTP)中抽象出上游Cluster,作为流量转发目标。
  • EDS:Endpoint发现服务。对于每个Cluster,Envoy通过EDS API动态获取Endpoint。
  • SDS:Secret发现服务,用于在运行时动态获取TLS证书。
上一篇:光伏组件竖排VS横排布置 谁的占地面积大?


下一篇:6 Django系列之关于models的sql语句日常用法总结