大纲
Istio架构&Pilot介绍
Istio服务发现
Istio服务配置
stio服务发现&规则管理与Kubernetes结合
ShowCase
Istio架构&Pilot介绍
Istio架构
Pilot功能
- 服务发现
- 服务配置
Istio服务发现
服务发现基本原理
a.app 88.88.88.66
a.app 88.88.88.77
a.app 88.88.88.88
b.app 88.88.88.99
b.app 88.88.88.55
SpringCloud的服务(注册与)发现流程
- 服务注册表:如Springcloud中一般Eureka服务;
- 服务注册:服务配置文件中配置服务名和本实例地址,实例启动时自动注册到服务注册表;
- 服务发现:访问目标服务时连服务注册表,获取服务实例列表。根据LB根据策略选择一个服务实例,建立连接去访问。
Istio服务发现流程
Istio服务发现流程
- 服务注册表: Pilot 从平台获取服务发现数据, 并提供统一的服务发现接口。
- 服务注册:无
- 服务发现: Envoy 实现服务发现,动态更新负载均衡池。在服务请求时使用对应的负载均衡策略将请求路由到对应的后端。
Pilot服务发现机制的Adapter机制
Istio服务发现实现:基于 Eureka
1. Pilot 实现若干服务发现的接口定义
2. Controller使用EurekaClient来获取服务列表, 提供转换后的标准的服务发现接口和数据结构;
3. Discoveryserver基于Controller上维护的服务发现数据, 发布成gRPC协议的服务供Envoy使用。
4. 当 有 服 务 访 问 时 , Envoy 在 处 理Outbound请求时, 根据配置的LB策略,选择一个服务实例发起访问
Istio 服务发现实现:基于Kubernetes
1. Pilot 实现若干服务发现的接口定义
2. Pilot 的Controller List/WatchKubeAPIserver上service、endpoint等资源对象并转换成标准格式。
3. Envoy从Pilot获取xDS,动态更新
4. 当有服务访问时, Envoy在处理Outbound请求时,根据配置的LB策略,选择一个服务实例发起访问。
Kubernetes & Istio 服务模型
Kuberntes的服务发现
Istio Upon Kubernetes场景
Istio Upon Kubernetes场景
Istio ( upon Kubernetes)服务发现和配置
Istio ( upon Kubernetes)服务发现和配置
Istio服务配置管理
Istio 服务访问规则维护和工作机制
Istio 服务访问规则维护和工作机制
- 1. 配置:管理员通过Pilot配置治理规则
- 2. 下发: Envoy从Pilot获取治理规则
- 3. 执行:在流量访问的时候执行治理规则
Istio治理规则
- VirtualService
- DestinationRule
- Gateway
- ServiceEntry
- …
https://istio.io/docs/reference/config/istio.networking.v1alpha3/
Istio流量规则: VirtualService
Istio流量规则: VirtualService
Istio流量规则: DestinationRule
Istio流量规则: DestinationRule
Istio流量规则: ServiceEntry & Gateway
ServiceEntry:
- 功能: Mesh外的服务加入到服务发现中,向Mesh里面的服务一样的被治理
- 机制: 将ServiceEntry描述的服务加入到服务发现中;对这些服务的outbound流量进行拦截,进而进行治理
Gateway:
- 功能:将mesh内的一个服务发布成可供外部访问。
- 机制:在入口处部署一个ingress的Envoy,在其上执行服务治理。
Istio配置规则维护和下发流程
治理规则定义 Istio VS Envoy
Istio 规则
Envoy规则
Istio治理能力执行位置
Istio服务发现&规则管理与Kubernetes结合
Kubernetes & Istio 结合
服务发现和配置管理: Istio+K8S
服务发现和配置管理: Spring Cloud+K8S