istio 各组件概念个人理解

简介:

本文档介绍了Istio:一个连接,管理和保护微服务的开放平台。Istio提供了一种通过负载平衡,服务到服务身份验证,监控等创建已部署服务网络的简便方法,无需更改服务代码。您可以通过在整个环境中部署特殊的边车代理来添加对服务的Istio支持,该代理拦截微服务之间的所有网络通信,使用Istio的控制平面功能进行配置和管理。

Istio目前支持Kubernetes上的服务部署,以及在Consul或Eureka注册的服务以及在各个VM上运行的服务。

有关Istio组件的详细概念信息,请参阅我们的其他概念指南。

为什么要使用Istio?

随着单片应用程序向分布式微服务架构过渡,Istio解决了开发人员和运营商面临的许多挑战。术语服务网格通常用于描述构成此类应用程序的微服务网络以及它们之间的交互。随着服务网格的大小和复杂性的增加,理解和管理变得更加困难。其要求可包括发现,负载平衡,故障恢复,指标和监控,以及通常更复杂的操作要求,如A / B测试,金丝片发布,速率限制,访问控制和端到端身份验证。

Istio通过提供整体服务网格的行为洞察和操作控制,提供完整的解决方案,以满足微服务应用的各种需求。它在服务网络中统一提供了许多关键功能:

  • 交通管理。控制服务之间的流量和API调用流,使呼叫更可靠,并在面对不利条件时使网络更加健壮。

  • 服务身份和安全。在网格中提供具有可验证身份的服务,并提供在流经不同可信度的网络时保护服务流量的能力。

  • 政策执行。将组织策略应用于服务之间的交互,确保实施访问策略,并在消费者之间公平地分配资源。通过配置网格而不是通过更改应用程序代码来进行策略更改。

  • 遥测。了解服务之间的依赖关系以及它们之间的流量的性质和流量,提供快速识别问题的能力。

除了这些行为,Istio还可以扩展以满足不同的部署需求:

  • 平台支持。Istio旨在运行在各种环境中,包括云,内部部署,Kubernetes,Mesos等。我们最初专注于Kubernetes,但很快就会努力支持其他环境。

  • 集成和定制。策略实施组件可以扩展和定制,以与现有的ACL,日志记录,监控,配额,审计等解决方案集成。

这些功能极大地减少了应用程序代码,底层平台和策略之间的耦合。这种减少的耦合不仅使服务更容易实现,而且使操作员更容易在环境之间移动应用程序部署或新的策略方案。因此,应用程序本身更具可移植性。

建筑

Istio服务网格在逻辑上被分成数据平面控制平面

  • 数据平面是由一组的部署为介导和控制微服务之间的所有网络通信,与通用的策略和遥测毂(混频器)沿着侧柜智能代理(特使)的。

  • 控制平面是负责管理和配置代理服务器的路由流量,并配置搅拌机,在执行政策和收集遥测。

下图显示了构成每个平面的不同组件:

Istio建筑

使者

Istio使用Envoy代理的扩展版本,这是一种用C ++开发的高性能代理,用于调解服务网格中所有服务的所有入站和出站流量。Istio利用Envoy的许多内置功能,例如动态服务发现,负载平衡,TLS终止,HTTP / 2和gRPC代理,断路器,运行状况检查,基于%的流量分配的分阶段部署,故障注入和丰富的指标。

特使在相同的Kubernetes吊舱中作为相关服务的边车部署。这允许Istio将关于流量行为的大量信号作为属性提取,这反过来它可以在Mixer中用于执行策略决策,并被发送到监控系统以提供有关整个网格行为的信息。sidecar代理模型还允许您将Istio功能添加到现有部署,而无需重新架构或重写代码。您可以在我们的设计目标中详细了解我们选择此方法的原因。

混合器

Mixer是一个独立于平台的组件,负责跨服务网格实施访问控制和使用策略,并从Envoy代理和其他服务收集遥测数据。代理提取请求级别属性,将其发送到Mixer进行评估。有关此属性提取和策略评估的更多信息,请参阅混音器配置。Mixer包含一个灵活的插件模型,使其能够与各种主机环境和基础架构后端进行交互,从这些细节中抽象出Envoy代理和Istio管理的服务。

飞行员

Pilot为Envoy边车提供服务发现,为智能路由(例如,A / B测试,金丝雀部署等)提供流量管理功能,以及弹性(超时,重试,断路器等)。它将控制流量行为的高级路由规则转换为特定于Envoy的配置,并在运行时将它们传播到sidecars。Pilot将特定于平台的服务发现机制抽象化,并将其合成为符合Envoy数据平面API的任何边车所消耗的标准格式。这种松散耦合允许Istio在多个环境(例如,Kubernetes,Consul / Nomad)上运行,同时为流量管理保持相同的操作员界面。

堡垒

Citadel提供强大的服务到服务和最终用户身份验证,内置身份和凭证管理。它可用于升级服务网格中的未加密流量,并使运营商能够基于服务标识而非网络控制来实施策略。从版本0.5开始,Istio支持基于角色的访问控制,以控制谁可以访问您的服务。

 

官网地址:https://istio.io/docs/concepts/what-is-istio/overview/

 

根据官网文档的个人理解:

Envoy:(可以理解为pod网关)

每个pod中有一个envoy代理(相当于是pod的一个动态网关)。拦截pod中所有服务的所有入站和出站流量。Envoy的许多内置功能,例如动态服务发现,负载平衡,TLS终止,HTTP / 2和gRPC代理,断路器,运行状况检查,指标上报。

 

Mixer :(可以理解为指标收集器,收集各项指标。对接外部组件做指标存储,展示。如:Prometheus,Fluentd,Jaeger)

从Envoy代理和其他服务收集遥测数据。代理提取请求级别属性,将其发送到Mixer进行评估。

演示如何从网格中收集遥测信息。

Pilot :

功能:

注册中心(zk,ectd)从k8s api获取相关服务信息

配置中心 (spring cloud config,Apollo)。通过配置api,动态转换为envoy的配置

Citadel

安全中心

 

简而言之:

Envoy:动态服务获取,负载平衡,路由,断路器,超时,指标上报。

Mixer:指标收集,对接外部组件(Prometheus,Fluentd,Jaeger)

Pilot注册中心,配置中心

Citadel:安全中心

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
2月前
|
Kubernetes 安全 API
Cilium 系列 -3-Cilium 的基本组件和重要概念
Cilium 系列 -3-Cilium 的基本组件和重要概念
|
6月前
|
运维 负载均衡 监控
服务网格技术对比:深入比较Istio、Linkerd和Envoy等服务网格解决方案的优缺点
服务网格技术对比:深入比较Istio、Linkerd和Envoy等服务网格解决方案的优缺点
178 0
|
容器 微服务 Kubernetes
带你读《Istio入门与实战》之一:服务网格与Istio
本书系统化介绍Istio技术要点与应用技巧,可帮助读者快速搭建微服务架构并进行管理。主要内容包括:service mesh基本概念与使用,Istio架构设计与主要功能,快速搭建一个微服务实验,介绍如何让服务流量控制更简单,让服务更具弹性,让服务故障测试更容易,让服务通信更安全可控,让服务更易观测与监控,以及istio维护方案。本书内容丰富、案例讲解,实用性强,非常适合入门级读者快速掌握Istio技术。
|
运维 Kubernetes 算法
说说Istio 的使用场景
【2月更文挑战第28天】
|
1月前
|
缓存 监控 安全
Istio架构及工作原理
【2月更文挑战第17天】从 Istio 的设计和实现原理可以看出,它是采用模块化设计,并且各个模块之间高度解耦,Proxy 专注于负责服务之间的通信,Pilot 专注于流量控制,Mixer 专注于策略控制以及监控日志功能,而 Citadel 专注于安全。
BXA
|
11月前
|
存储 运维 Kubernetes
Kubernetes架构与组件详解
Kubernetes是由Google开源的容器编排系统,用于自动化部署、扩展和管理容器化应用程序的平台。Kubernetes充分利用了云计算和容器化技术,可以大幅简化应用程序的开发、部署和运行过程。
BXA
122 0
|
运维 Kubernetes 监控
浅析 Kubernetes 的架构与组件
架构组成 和大多数分布式系统一样,Kubernetes 集群至少需要一个主节点(控制平面)和多个计算节点(计算平面)
|
API 微服务 Perl
10个 Istio 流量管理 最常用的例子,你知道几个?
10 个 Istio 流量管理 最常用的例子,强烈建议收藏起来,以备不时之需。
345 0
10个 Istio 流量管理 最常用的例子,你知道几个?
|
存储 弹性计算 Kubernetes
|
Kubernetes 数据安全/隐私保护 微服务
Google Kubernetes引擎上使用Istio简化微服务 — 第II部分 (译)
Google Kubernetes引擎上使用Istio简化微服务 — 第II部分 (译)
158 0