4.1 流量管理

Istio的流量管理本质上是将流量与基础设施解耦,让运维人员可以通过Pilot指定流量遵循什么规则,而不是指定哪些pod虚拟机应该接收流量,这样通过Pilot和智能Envoy代理就可以进行流量控制。例如,你可以通过Pilot指定特定服务的5%流量转到金丝雀版本,而不必考虑金丝雀部署的大小,或根据请求的内容将流量发送到特定版本。

很明显,将流量管理与基础设施扩缩分离开来,使得系统可提供独立于应用代码的多种功能,例如A/B测试、金丝雀发布等机制所依赖的动态请求路由。此外,Istio还使用超时、重试和熔断器来处理故障恢复,并使用故障注入来跨服务测试故障恢复政策的兼容性。这些功能都是通过在服务网格中部署的Sidecar代理Envoy来实现的。

Istio流量管理的核心组件是Pilot,Pilot管理和配置部署在特定Istio服务网格中的所有Envoy代理实例,如图4-1 Istio架构中的描述。Pilot允许你指定在Envoy代理之间使用什么样的路由流量规则,并配置故障恢复功能,如超时、重试和熔断器。Pilot还维护了网格中所有服务的规范模型,并使用这个模型通过发现服务让Envoy了解网格中的其他实例。每个Envoy实例都会维护负载均衡信息,这些信息来自Pilot以及对负载均衡池中其他实例的定期健康检查。从而允许其在目标实例之间智能分配流量,同时遵循其指定的路由规则。Pilot负责管理通过Istio服务网格发布的Envoy实例的生命周期。

图4-1 Istio架构