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

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月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

 




相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
26天前
|
自然语言处理 负载均衡 Kubernetes
分布式系统架构2:服务发现
服务发现是分布式系统中服务实例动态注册和发现机制,确保服务间通信。主要由注册中心和服务消费者组成,支持客户端和服务端两种发现模式。注册中心需具备高可用性,常用框架有Eureka、Zookeeper、Consul等。服务注册方式包括主动注册和被动注册,核心流程涵盖服务注册、心跳检测、服务发现、服务调用和注销。
69 12
|
2月前
|
SQL Java 数据库连接
Mybatis架构原理和机制,图文详解版,超详细!
MyBatis 是 Java 生态中非常著名的一款 ORM 框架,在一线互联网大厂中应用广泛,Mybatis已经成为了一个必会框架。本文详细解析了MyBatis的架构原理与机制,帮助读者全面提升对MyBatis的理解和应用能力。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
Mybatis架构原理和机制,图文详解版,超详细!
|
2月前
|
负载均衡 Java 持续交付
深入解析微服务架构中的服务发现与负载均衡
深入解析微服务架构中的服务发现与负载均衡
99 7
|
2月前
|
监控 安全 Cloud Native
云原生安全:Istio在微服务架构中的安全策略与实践
【10月更文挑战第26天】随着云计算的发展,云原生架构成为企业数字化转型的关键。微服务作为其核心组件,虽具备灵活性和可扩展性,但也带来安全挑战。Istio作为开源服务网格,通过双向TLS加密、细粒度访问控制和强大的审计监控功能,有效保障微服务间的通信安全,成为云原生安全的重要工具。
58 2
|
3月前
|
存储 资源调度 算法
操作系统的心脏:深入理解内核架构与机制####
【10月更文挑战第16天】 本文旨在揭开操作系统最神秘的面纱——内核,通过剖析其架构设计与关键机制,引领读者一窥究竟。在这篇探索之旅中,我们将深入浅出地讨论内核的基本构成、进程管理的智慧、内存分配的策略,以及那至关重要的系统调用接口,揭示它们是如何协同工作,支撑起现代计算机系统的高效运行。这既是一次技术的深潜,也是对“看不见的手”调控数字世界的深刻理解。 ####
68 3
|
3月前
|
Kubernetes 安全 微服务
使用 Istio 缓解电信 5G IoT 微服务 Pod 架构的安全挑战
使用 Istio 缓解电信 5G IoT 微服务 Pod 架构的安全挑战
78 8
|
4月前
|
存储 搜索推荐 数据库
MarkLogic在微服务架构中的应用:提供服务间通信和数据共享的机制
随着微服务架构的发展,服务间通信和数据共享成为关键挑战。本文介绍MarkLogic数据库在微服务架构中的应用,阐述其多模型支持、索引搜索、事务处理及高可用性等优势,以及如何利用MarkLogic实现数据共享、服务间通信、事件驱动架构和数据分析,提升系统的可伸缩性和可靠性。
63 5
|
5月前
|
消息中间件 负载均衡 Java
揭秘Kafka背后的秘密!Kafka 架构设计大曝光:深入剖析Kafka机制,带你一探究竟!
【8月更文挑战第24天】Apache Kafka是一款专为实时数据处理及流传输设计的高效率消息系统。其核心特性包括高吞吐量、低延迟及出色的可扩展性。Kafka采用分布式日志模型,支持数据分区与副本,确保数据可靠性和持久性。系统由Producer(消息生产者)、Consumer(消息消费者)及Broker(消息服务器)组成。Kafka支持消费者组,实现数据并行处理,提升整体性能。通过内置的故障恢复机制,即使部分节点失效,系统仍能保持稳定运行。提供的Java示例代码展示了如何使用Kafka进行消息的生产和消费,并演示了故障转移处理过程。
61 3
|
5月前
|
数据采集 存储 Java
Flume Agent 的内部原理分析:深入探讨 Flume 的架构与实现机制
【8月更文挑战第24天】Apache Flume是一款专为大规模日志数据的收集、聚合及传输而设计的分布式、可靠且高可用系统。本文深入解析Flume Agent的核心机制并提供实际配置与使用示例。Flume Agent由三大组件构成:Source(数据源)、Channel(数据缓存)与Sink(数据目的地)。工作流程包括数据采集、暂存及传输。通过示例配置文件和Java代码片段展示了如何设置这些组件以实现日志数据的有效管理。Flume的强大功能与灵活性使其成为大数据处理及实时数据分析领域的优选工具。
175 1
|
5月前
|
Kubernetes 安全 微服务
使用 Istio 缓解电信 5G IoT 微服务 Pod 架构的安全挑战
在5G电信领域,Kubernetes集群中部署微服务至关重要,但也带来了重大的安全挑战。Istio作为一个强大的开源服务网格,能有效地管理这些微服务间的通信,通过其控制平面自动将Sidecar代理注入到各微服务Pod中,确保了安全且高效的通信。Istio的架构由数据平面和控制平面组成,其中Sidecar代理作为Envoy代理运行在每个Pod中,拦截并管理网络流量。此外,Istio支持多种Kubernetes发行版和服务,如EKS等,不仅增强了安全性,还提高了应用性能和可观测性。
92 0
使用 Istio 缓解电信 5G IoT 微服务 Pod 架构的安全挑战