华为云讲解:2.IstioPilot与服务发现
华为云讲解:2. Istio Pilot 与服务发现
⽂章⽬录
主要点Pilot
Pilot 与“数据⾯”交互完成服务发现和配置管理的。
服务发现
写⼀个a.app 名字就导⼊了⼀个后端但是我们不知道这个后端服务是88还是99。虽然在微服务讲服务发现说的很多,但是这是做微服务的基本⼿段,如果只是⼀个单体的应⽤,或者两个很简单的应⽤,都可以不⽤服务发现。
结合springCloud的服务注册发现 XYZ Service 访问ABCservice的时候,ABCservice先把⾃⼰的信息放Service Registration,也就是EurekaServer。然后服务调⽤者 XYZ Service ⼿⾥有个Eureka cilent 去Service Registration拿到服务发现的信息,根据负载均衡策略ribbon访问真正的实例。
看图说话在Istio⾥⾯Service A 访问ServiceB 如何做到的
⾸先ServiceA 出⼝流量先被Proxy 拦截掉,Proxy会链接服务发现的地址 Pilot,从上⾯拿到对应服务发现的数据,就是服务实例的应⽤关系,同时也会拿到⼀个负载均衡策略,然后访问ServiceB ,如果ServiceB 有若⼲个实例,图中有三个实例,根据负载均衡策略访问到对应的ServiceB 副本,当然在访问到ServiceB 的容器的时候是先进⼊ServiceB 的Proxy。
可以看出⽆论什么架构的服务发现都⼏乎⼀样
service fault
Service Mesh服务发现架构特点,因为Service和Proxy在⼀起的,Proxy会把所访问Service的流量都给他拦截,但是Service本⾝感知不到Proxy的存在,在访问特别频繁特别密集的时候,提供给这种⽅式,对服务之间的访问治理是⾮常有⽤的,因此也是基于这种思路这种架构设置做它的功能的。
底层实现
Pilot⾥⾯有两个东西⼀个是Abstart Model,另⼀个是 Platform Adapter,
Abstart Model是存放各种服务信息
Platform Adapter,可以适配各种平台服务发现⽐如Eureka
服务发现的实现
Pilot ⾥⾯有个ServiceControllter,这个⾥⾯有个Eureka Cilent ,Eureka Cilent 去真正的Eureka Server 服务拿到服务列表
,Discoveryserver维护成服务发现数据,然后通过rpc 接⼝提供给Envoy使⽤
Eureka由于不在维护,在Istio1.0之后的版本Pilot的Eureka Cilent 已经被⼲掉了
Istio 结合Kubernetes 做服务发现
结合基于Eureka 的例⼦,我们可以看出也是通过ServiceControllter通过List/Watch的⽅式去ApiServer 拿去到服务数据,然后Discoveryserver维护成服务发现数据,然后通过rpc 接⼝提供给Envoy使⽤,当访问出⼝请求的时候根据对应的负载均衡策略选择⼀个服务实例发起访问。
虽然有个platform Adapter 可以适配各种平台但他⽀持最好的就是kubernets, 看图其实Istio service 就是k8s的service,⼀个版本把流量导⼊到另⼀个版本这样做灰度发布在Istio其实很简单。
K8s 的服务发现也是通过kube-proxy 去apiserver 拿到对应服务列表信息,访问到具体的服务的。K8s 本⾝也是有服务发现的机制的。
Istio的服务发现其实通过Pilot去k8s的apiserver,然后取的etcd的配置数据,然后 通过Pilot下发到Envoy。从这张图中可以看出k8s和Istio是⾮常紧密的关系,只要Istio有的功能都是基于k8s构建的。
总结
Pilot 基于提供的Platform Adapter机制做服务发现,可以适配各种不同的后端,当前⽀持最好的k8s
配置管理

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。