isito是如何实现服务发现的?

在开始了解istio是如何实现服务发现之前,我们先了解下K8S中的服务发现与istio的服务发现的不同处

(一)Kubernetes服务发现

  K8S中实现服务发现是通过Service基于每个节点的Kube-Proxy组件向Kube-apiserver获取Service及其后端Endpoint信息,Endpoint负责记录Service对应后端的所有Pod IP地址,当有请求到达SVC时,SVC会从Endpoint当中选取Pod来处理该请求

 

(二)istio服务发现

  istio几乎复用了K8S中的服务发现模型,istio通过Kube-apiserver获取Service和Endpoint信息,将其转化为自身的服务模型,但其数据面组件不再是Kube-Proxy组件,而是每个Pod中的SideCar,也可以看作是每个服务实例中的Proxy

 

两者的不同之处:

  K8S当中是通过Kube-Proxy组件向Kube-Apiserver获取SVC和Endpoint信息的,但istio是通过Kube-apiserver来获取SVC和Endpoint信息后将其转化为istio自身的服务模型

  K8S的负载均衡能力是基于OSI七层模型中的4层负载能力,即 不能基于应用层的请求(如特定的URL、cookie、特定的请求头部信息)进行负载均衡,但istio的负载均衡能力是基于OSI七层模型中的7层负载能力,能够实现基于应用层的请求进行负载均衡

PS:istio的服务发现既可以基于第四层实现服务发现,也可以通过第七层实现服务发现,但第七层服务发现是建立在第四层的基础之上

posted @ 2024-07-01 14:55  Ky150  阅读(46)  评论(0)    收藏  举报