istio中的流量管理的核心组件是Pilot(理论)

旧时模样 提交于 2020-02-29 10:00:58

用于Istio中的流量管理的核心组件是Pilot,它管理和配置在特定Istio服务网格中部署的所有Envoy代理实例。它允许您指定要用于在Envoy代理之间路由流量的规则,以及配置故障恢复功能(如超时,重试和断路器)。它还维护网格中所有服务的规范模型,并使用它来让Envoys通过其发现服务了解网格中的其他实例。

每个Envoy实例根据从Pilot获取的信息以及对其负载平衡池中其他实例的定期运行状况检查来维护负载平衡信息,从而允许它在遵循其指定的路由规则的同时智能地在目标实例之间分配流量。

交通管理的好处

使用Istio的流量管理模型实质上解耦了流量和基础架构扩展,让运营商通过Pilot指定他们希望流量遵循的规则,而不是哪些特定的pod / VM应该接收流量 - 飞行员和智能Envoy代理负责其余的工作。因此,例如,您可以通过Pilot指定您希望特定服务的5%流量转到金丝雀版本,而不管金丝雀部署的大小,或根据请求的内容将流量发送到特定版本。

用Istio进行交通管理

将流量从这样的基础设施扩展中分离,允许Istio提供存在于应用程序代码之外的各种流量管理功能。除了用于A / B测试,逐步推出和金丝雀版本的动态请求路由之外,它还使用超时,重试和断路器处理故障恢复,最后使用故障注入来测试跨服务的故障恢复策略的兼容性。这些功能都是通过服务网格上部署的Envoy sidecars / proxies实现的。

 

Pilot负责整个Istio服务网格中部署的Envoy实例的生命周期。

试点架构

如上图所示,Pilot维护网格中服务的规范表示,该服务独立于底层平台。Pilot中特定于平台的适配器负责适当地填充此规范模型。例如,Pilot中的Kubernetes适配器实现了必要的控制器,以观察Kubernetes API服务器是否更改了pod注册信息,入口资源以及存储流量管理规则的第三方资源。该数据被翻译成规范表示。特定于特定的配置基于规范表示生成。

Pilot公开API用于服务发现,动态更新到负载平衡池路由表。这些API将Envoy与特定于平台的细微差别分离,简化了设计并提高了跨平台的可移植性。

运营商可以通过Pilot规则API指定高级别流量管理规则。这些规则被转换为低级配置,并通过发现API分发给Envoy实例。

 

https://istio.io/docs/guides/bookinfo/

https://istio.io/docs/concepts/traffic-management/pilot/

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!