Istio
service mesh


实现
国外
linkerd, Istio

国内
蚂蚁自研,已开源

腾讯基于springcloud

华为自研

Istio

K8S和Istio相辅相成,Istio帮助K8S实现了服务治理的功能,而K8S为Istio实现了数据层面,服务发现等功能



虽然sidecar模式也存在缺点,但是和springcloud等的微服务模式相比可以实现业务代码和服务治理的解耦,显然更符合高内聚低耦合的原则
架构图

自动注入
在K8S创建Pod的时候,会修改原始的yml配置部署文件,添加一个container容器名为sidecar,镜像地址为sidecar的地址,该操作是无感知的
流量拦截

通信期间对网卡的出站和入站数据进行拦截控制
服务发现和负载均衡
Envoy向Pilot请求需要通信的服务地址和设置的负载均衡策略,从而根据相应的负载均衡策略选择正确的服务进行通信
流量控制

向Pilot请求流量规则,之后通过获取到的证书和密钥进行通信
访问安全

向Citadel发送请求获取证书和密钥再进行通信
服务监控

Mixer收集各Pod上报的数据并提供接口给其他监控工具调用来展示监控信息
策略执行

发送请求前先询问Mixer该请求是否可以发送,接收请求的时候也是向Mixer询问是否可接收
Pilot
在Istio架构中是必须的

-
类似注册中心,但是不存储具体的注册信息,而是对接第三方注册中心,由第三方注册中心完成注册信息的存储和管理
-
向数据平面下发路由规则,将配置的路由规则转换成Envoy能识别的格式并下发,Envoy根据路由规则进行负责均衡
Mixer
在Istio架构中不是必须的
负责数据收集并提供接口给第三方监控平台,如Promethues
负责策略执行,即告诉Envoy该请求是丢弃还是继续下发
Citadel
在Istio架构中不是必须的
Istio的认证授权机制主要由它完成,需要与其他组件一起配合完成
支付类产品为了保证安全性用得比较多


Galley
类似配置中心




Sidecar-injector
在pod启动时自动注入一个sidecar容器,对用户是透明的,与业务代码容器分离,降低了业务代码复杂度
Proxy(Envoy)
sidecar,负责数据平面与控制平面的交互

IngressGateway
向外暴露统一访问端口


浙公网安备 33010602011771号