Istio整体架构解析

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 【7月更文挑战第17天】Istio整体架构分为数据平面(Data Plane)和控制平面(Control Plane)两部分

Istio在微服务之间建立连接,接管通信功能,对业务微服务屏蔽通信细节,同时通过流量控制、策略控制、遥测统计、Istio安全机制等对微服务进行监控和管理,使得微服务架构更加健壮、安全和易扩展。Istio整体架构分为数据平面(Data Plane)和控制平面(Control Plane)两部分。


一、数据平面

数据平面除了负责实际流量转发工作的数据转发代理服务istio/proxy之外,还有几个关键组件:pilot-agent负责转发代理的启动和生命周期管理,istio-init负责流量透明拦截的配置,pilot-agent、istio-init和转发代理一同部署,共同为业务流量转发保驾护航。

  • istio/proxy

istio/proxy是Istio在Envoy官方源码基础上的扩展实现,除了包括Envoy的全部功能外,还包括了一些扩展支持,Istio扩展通过Envoy过滤器插件的方式提供,当前主要扩展是Mixer客户端的支持。

  • pilot-agent

pilot-agent是一个本地代理,负责管理istio/proxy服务的整个生命周期。具体包括istio/proxy准备启动参数和配置文件,负责管理istio/proxy的启动过程,istio/proxy启动后的运行状态监控。当监控到istio/proxy运行状态不正常时,pilot-agent负责将istio/proxy重新调整到正常状态,调整策略具体包括重启或者调度到其他节点运行等。

pilot-agent和istio/proxy均会启动相应的HTTP管理端口,供外界查询当前的运行状态,如果运行状态不符合预期时,可以采取相应的控制策略。

  • istio-init

istio-init负责业务微服务的流量透明拦截,通过配置相应的流量拦截策略,可以将业务服务的所有出入流量转发到本地的数据平面代理节点处理。Istio当前使用Iptables作为默认的流量拦截策略,istio-init通过istio-iptables.sh拦截配置,配置相应的Iptables规则,完成具体的流量拦截操作。

  • node-agent

Istio为了实现不同节点之间的安全通信,通信一般是通过TLS的方式进行。为了完成TLS通信,数据平面代理节点需要获取证书和密钥相关的信息。node-agent就是负责证书和密钥等安全信息的获取,和istio/proxy、pilot-agent以及istio-init的Pod级别的部署方式不同,node-agent当前采用Kubernetes Node级别的部署方式,每个Node上部署一个node-agent。

node-agent作为代理服务,接收数据平面代理节点的证书请求,转换成控制平面需要的格式,请求控制平面的证书管理服务,完成证书和密钥的获取和下发。

二、控制平面

控制平面中,istio-telemetry提供可观测性支持,基于istio-telemetry可以掌控整个Istio集群当前的运行状态;istio-pilot和istio-policy分别负责流量控制和策略控制,观测到运行状态不符合预期时,可以通过istio-pilot对流量和路由转发进行控制与调整,通过istio-policy可以灵活动态地引入新的基础设施,对Istio运行进行精细化控制。

  • istio-pilot

istio-pilot负责Istio数据平面的XDS配置管理,具体包括:①流量管理和服务发现配置等,通过提供通用的流量管理模型和服务发现模型,对接不同的平台适配层;②提供统一的XDS API,供Envoy服务调用。

部署上,通过Kubernetes Service istio-pilot对外提供服务,可以配置为1到多个副本。Istio当前支持多集群模式,istio-pilot不仅可以负责当前Istio集群的XDS配置管理,同时可以支持其他Istio集群以远程的方式和istio-pilot进行交互。

  • sidecar-injector

sidecar-injector负责数据平面代理Sidecar的注入,通过Sidecar的透明注入支持,可以减少Istio部署和运维上的复杂度,对Istio的大规模开展有着非常重要的意义。

  • istio-telemetry和istio-policy

istio-telemetry和istio-policy均属于Mixer服务,分别负责遥测统计和策略控制工作。这两个服务的代码和二进制文件完全一样,之所以分开部署,是因为遥测统计和策略控制是两个差异很大的功能特性,分开部署方便采用不同的配置和管控方式,也可通过部署隔离避免相互之间的影响。

  • istio-catedal

istio-catedal属于通信安全,负责安全证书的管理和发放,istio-catedal并不是唯一的证书管理方式,Istio当前支持Catedal、Vault和Google等多种证书管理方式,Catedal是当前默认的证书管理方式。当采用其他证书管理方式时,不需要部署istio-catedal,比如使用Vault时就不再需要部署istio-catedal,相反则需要使用Vault对应的证书服务器。

  • istio-galley

istio-galley是Istio1.1新引入的配置管理框架,在引入Galley之前,Istio控制平面的各个组件需要分别对Kubernetes资源进行管理,包括资源的配置验证,监控资源配置变化,并针对配置变更采取相应的处理等。


为了减少Istio不同组件配置管理方面的重复工作,Istio将配置管理相关的工作抽象出一个单独的组件Galley,后续其他Istio组件不再需要单独和各种平台上的资源直接打交道,而是使用简易的接口和Galley进行交互,由Galley负责配置验证、配置变更管理、配置源管理、多平台适配等工作。

相关文章
|
3天前
|
XML Java 开发者
Spring底层架构核心概念解析
理解 Spring 框架的核心概念对于开发和维护 Spring 应用程序至关重要。IOC 和 AOP 是其两个关键特性,通过依赖注入和面向切面编程实现了高效的模块化和松耦合设计。Spring 容器管理着 Beans 的生命周期和配置,而核心模块为各种应用场景提供了丰富的功能支持。通过全面掌握这些核心概念,开发者可以更加高效地利用 Spring 框架开发企业级应用。
38 18
|
2月前
|
运维 监控 持续交付
微服务架构解析:跨越传统架构的技术革命
微服务架构(Microservices Architecture)是一种软件架构风格,它将一个大型的单体应用拆分为多个小而独立的服务,每个服务都可以独立开发、部署和扩展。
424 36
微服务架构解析:跨越传统架构的技术革命
|
2月前
|
存储 Linux API
深入探索Android系统架构:从内核到应用层的全面解析
本文旨在为读者提供一份详尽的Android系统架构分析,从底层的Linux内核到顶层的应用程序框架。我们将探讨Android系统的模块化设计、各层之间的交互机制以及它们如何共同协作以支持丰富多样的应用生态。通过本篇文章,开发者和爱好者可以更深入理解Android平台的工作原理,从而优化开发流程和提升应用性能。
|
3月前
|
SQL 数据可视化 数据库
多维度解析低代码:从技术架构到插件生态
本文深入解析低代码平台,从技术架构到插件生态,探讨其在企业数字化转型中的作用。低代码平台通过图形化界面和模块化设计降低开发门槛,加速应用开发与部署,提高市场响应速度。文章重点分析开源低代码平台的优势,如透明架构、兼容性与扩展性、可定制化开发等,并详细介绍了核心技术架构、数据处理与功能模块、插件生态及数据可视化等方面,展示了低代码平台如何支持企业在数字化转型中实现更高灵活性和创新。
66 1
|
2月前
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
3月前
|
Cloud Native Devops 云计算
云计算的未来:云原生架构与微服务的革命####
【10月更文挑战第21天】 随着企业数字化转型的加速,云原生技术正迅速成为IT行业的新宠。本文深入探讨了云原生架构的核心理念、关键技术如容器化和微服务的优势,以及如何通过这些技术实现高效、灵活且可扩展的现代应用开发。我们将揭示云原生如何重塑软件开发流程,提升业务敏捷性,并探索其对企业IT架构的深远影响。 ####
72 3
|
3月前
|
Cloud Native 安全 数据安全/隐私保护
云原生架构下的微服务治理与挑战####
随着云计算技术的飞速发展,云原生架构以其高效、灵活、可扩展的特性成为现代企业IT架构的首选。本文聚焦于云原生环境下的微服务治理问题,探讨其在促进业务敏捷性的同时所面临的挑战及应对策略。通过分析微服务拆分、服务间通信、故障隔离与恢复等关键环节,本文旨在为读者提供一个关于如何在云原生环境中有效实施微服务治理的全面视角,助力企业在数字化转型的道路上稳健前行。 ####
|
2月前
|
Java 开发者 微服务
从单体到微服务:如何借助 Spring Cloud 实现架构转型
**Spring Cloud** 是一套基于 Spring 框架的**微服务架构解决方案**,它提供了一系列的工具和组件,帮助开发者快速构建分布式系统,尤其是微服务架构。
243 69
从单体到微服务:如何借助 Spring Cloud 实现架构转型
|
2月前
|
设计模式 负载均衡 监控
探索微服务架构下的API网关设计
在微服务的大潮中,API网关如同一座桥梁,连接着服务的提供者与消费者。本文将深入探讨API网关的核心功能、设计原则及实现策略,旨在为读者揭示如何构建一个高效、可靠的API网关。通过分析API网关在微服务架构中的作用和挑战,我们将了解到,一个优秀的API网关不仅要处理服务路由、负载均衡、认证授权等基础问题,还需考虑如何提升系统的可扩展性、安全性和可维护性。文章最后将提供实用的代码示例,帮助读者更好地理解和应用API网关的设计概念。
92 8
|
3月前
|
Dubbo Java 应用服务中间件
服务架构的演进:从单体到微服务的探索之旅
随着企业业务的不断拓展和复杂度的提升,对软件系统架构的要求也日益严苛。传统的架构模式在应对现代业务场景时逐渐暴露出诸多局限性,于是服务架构开启了持续演变之路。从单体架构的简易便捷,到分布式架构的模块化解耦,再到微服务架构的精细化管理,企业对技术的选择变得至关重要,尤其是 Spring Cloud 和 Dubbo 等微服务技术的对比和应用,直接影响着项目的成败。 本篇文章会从服务架构的演进开始分析,探索从单体项目到微服务项目的演变过程。然后也会对目前常见的微服务技术进行对比,找到目前市面上所常用的技术给大家进行讲解。
88 1
服务架构的演进:从单体到微服务的探索之旅

热门文章

最新文章

推荐镜像

更多