Istio:服务发现和Pilot的架构机制

本文涉及的产品
应用型负载均衡 ALB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介: Istio:服务发现和Pilot的架构机制

大纲

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

 




相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
1月前
|
运维 负载均衡 微服务
Kubernetes 安全 容器
77 0
|
6月前
|
存储 编解码 搜索推荐
文生图架构设计原来如此简单之社区与共享机制
工作流共享是文生图应用社区建设的核心功能,它使用户能够分享创作经验和技巧,形成知识共享生态。工作流序列化与存储设计需要解决复杂工作流的高效表示问题。
149 10
|
8月前
|
存储 监控 算法
公司监控上网软件架构:基于 C++ 链表算法的数据关联机制探讨
在数字化办公时代,公司监控上网软件成为企业管理网络资源和保障信息安全的关键工具。本文深入剖析C++中的链表数据结构及其在该软件中的应用。链表通过节点存储网络访问记录,具备高效插入、删除操作及节省内存的优势,助力企业实时追踪员工上网行为,提升运营效率并降低安全风险。示例代码展示了如何用C++实现链表记录上网行为,并模拟发送至服务器。链表为公司监控上网软件提供了灵活高效的数据管理方式,但实际开发还需考虑安全性、隐私保护等多方面因素。
138 0
公司监控上网软件架构:基于 C++ 链表算法的数据关联机制探讨
|
10月前
|
自然语言处理 负载均衡 Kubernetes
分布式系统架构2:服务发现
服务发现是分布式系统中服务实例动态注册和发现机制,确保服务间通信。主要由注册中心和服务消费者组成,支持客户端和服务端两种发现模式。注册中心需具备高可用性,常用框架有Eureka、Zookeeper、Consul等。服务注册方式包括主动注册和被动注册,核心流程涵盖服务注册、心跳检测、服务发现、服务调用和注销。
409 13
|
11月前
|
负载均衡 Java 持续交付
深入解析微服务架构中的服务发现与负载均衡
深入解析微服务架构中的服务发现与负载均衡
573 7
|
11月前
|
SQL Java 数据库连接
Mybatis架构原理和机制,图文详解版,超详细!
MyBatis 是 Java 生态中非常著名的一款 ORM 框架,在一线互联网大厂中应用广泛,Mybatis已经成为了一个必会框架。本文详细解析了MyBatis的架构原理与机制,帮助读者全面提升对MyBatis的理解和应用能力。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
Mybatis架构原理和机制,图文详解版,超详细!
|
11月前
|
监控 安全 Cloud Native
云原生安全:Istio在微服务架构中的安全策略与实践
【10月更文挑战第26天】随着云计算的发展,云原生架构成为企业数字化转型的关键。微服务作为其核心组件,虽具备灵活性和可扩展性,但也带来安全挑战。Istio作为开源服务网格,通过双向TLS加密、细粒度访问控制和强大的审计监控功能,有效保障微服务间的通信安全,成为云原生安全的重要工具。
205 2
|
12月前
|
存储 资源调度 算法
操作系统的心脏:深入理解内核架构与机制####
【10月更文挑战第16天】 本文旨在揭开操作系统最神秘的面纱——内核,通过剖析其架构设计与关键机制,引领读者一窥究竟。在这篇探索之旅中,我们将深入浅出地讨论内核的基本构成、进程管理的智慧、内存分配的策略,以及那至关重要的系统调用接口,揭示它们是如何协同工作,支撑起现代计算机系统的高效运行。这既是一次技术的深潜,也是对“看不见的手”调控数字世界的深刻理解。 ####
298 3
|
Kubernetes 安全 微服务
使用 Istio 缓解电信 5G IoT 微服务 Pod 架构的安全挑战
使用 Istio 缓解电信 5G IoT 微服务 Pod 架构的安全挑战
221 8