istio 原理简介

简介: Istio 的架构分为控制平面和数据平面数据平面:由一组智能代理(Envoy)以 sidecar 模式部署,协调和控制所有服务之间的网络通信。控制平面:负责管理和配置代理路由流量,以及在运行时执行的政策。

前导


由于 istio 自 1.5 版本以后架构上有了较大变化,控制面从多组件变成了单体的 istiod 组件,所以下文会先介绍 1.5 之前的架构,再介绍 1.5 之后的,是一个由繁到简的过程。


istio 1.5 之前架构


51.jpg


Istio 的架构分为控制平面和数据平面


  • 数据平面:由一组智能代理(Envoy)以 sidecar 模式部署,协调和控制所有服务之间的网络通信。
  • 控制平面:负责管理和配置代理路由流量,以及在运行时执行的政策。


52.jpg


可以看到控制面(control plane )组件众多,下图是 1.1 版本所包含的组件:


53.jpg


istio 工作原理


我们先按照 1.5 版本之前的架构描述


Sidecar  注入 (envoy)


54.jpg


详细的注入过程可以参考:https://blog.yingchi.io/posts/2020/6/istio-sidecar-injection.html


55.jpg


连接 (pilot)


56.jpg


控制 && 观测 (mixer telemetry、mixer policy)


57.jpg


保护(citadel)


58.jpg


配置


Galley 原来仅负责进行配置验证,1.1 后升级为整个控制面的配置管理中心,除了继续提供配置验证功能外,Galley 还负责配置的管理和分发,Galley 使用 网格配置协议 (Mesh Configuration Protocol) 和其他组件进行配置的交互。

提供 istio 中的配置管理服务,验证 Istio 的 CRD 资源的合法性


istio 各组件功能及作用


  • istio-polit: 服务发现,向数据平面下发规则,包括 VirtualService、DestinationRule、Gateway、ServicEntry 等流量治理规则,也包括认证授权等安全规则。
  • istio-telemetry: 专门收集遥测数据的 mixer 服务组件。
  • Istio-policy: 另外一个 mixer 服务,可以对接如配额、授权、黑白名单等不同的控制后端,对服务间的访问进行控制。
  • Istio-citadel: 核心安全组件,提供了自动生成、分发、轮换与撤销秘钥和证书的功能。
  • Istio-galley: 配置管理的组件,验证配置信息的格式和内容的正确性,并将这些配置信息提供给管理面的 Pilot 和 Mixer 使用。
  • Istio-sidecar-injector: 负责自动注入的组件。
  • Istio-proxy: 数据面的轻量代理。
  • Istio-ingressgateway: 入口处的 gateway。


istio 1.5 之后架构


59.jpg


之前版本的 istio 对组件进行了很好的解耦,组件们各司其职,当然也带来了组件比较多的问题。可以看到新版本将众多组件包装在了一起叫  istiod,所以新版本 istio 核心组件就只剩下一个:istiod。


相关文章
|
5天前
|
缓存 监控 安全
Istio架构及工作原理
【2月更文挑战第17天】从 Istio 的设计和实现原理可以看出,它是采用模块化设计,并且各个模块之间高度解耦,Proxy 专注于负责服务之间的通信,Pilot 专注于流量控制,Mixer 专注于策略控制以及监控日志功能,而 Citadel 专注于安全。
|
Kubernetes 前端开发 测试技术
Rainbond 对接 Istio 原理讲解和代码实现分析
现有的 ServiceMesh 框架有很多,如 Istio、linkerd等。对于用户而言,在测试环境下,需要达到的效果是快、开箱即用。但在生产环境下,可能又有熔断、延时注入等需求。那么单一的 ServiceMesh 框架无法同时满足用户不同的需求。 在之前的 Rainbond 版本中,Rainbond 支持了多种不同的应用治理模式,作为应用级的插件,实现了Istio 治理模式的切换。 本文将对Rainbond 实现Istio治理模式进行原理解析。
Rainbond 对接 Istio 原理讲解和代码实现分析
|
7月前
|
Kubernetes 监控 Go
在Kubernetes上安装和配置Istio:逐步指南,展示如何在Kubernetes集群中安装和配置Istio服务网格
在Kubernetes上安装和配置Istio:逐步指南,展示如何在Kubernetes集群中安装和配置Istio服务网格
90 0
|
7月前
|
存储 Kubernetes 负载均衡
【Kubernetes的Service Mesh发展历程及Istio架构、存储供应使用NFS flexvolume CSI接口】
【Kubernetes的Service Mesh发展历程及Istio架构、存储供应使用NFS flexvolume CSI接口】
|
8月前
|
Kubernetes Cloud Native 开发者
15分钟在笔记本上搭建 Kubernetes + Istio开发环境-阿里云开发者社区
15分钟在笔记本上搭建 Kubernetes + Istio开发环境-阿里云开发者社区
15分钟在笔记本上搭建 Kubernetes + Istio开发环境-阿里云开发者社区
|
Kubernetes Cloud Native 容器
《Kubernetes上基于Istio体验云原生应用实践》电子版地址
Kubernetes上基于Istio体验云原生应用实践
79 0
《Kubernetes上基于Istio体验云原生应用实践》电子版地址
|
缓存 Kubernetes 网络协议
Kubernetes 服务接入 Istio
Kubernetes 服务接入 Istio
320 1
|
存储 Prometheus Kubernetes
使用 Flux+Flagger+Istio+Kubernetes 实战 GitOps 云原生渐进式(金丝雀)交付
使用 Flux+Flagger+Istio+Kubernetes 实战 GitOps 云原生渐进式(金丝雀)交付
386 0
使用 Flux+Flagger+Istio+Kubernetes 实战 GitOps 云原生渐进式(金丝雀)交付
|
Kubernetes NoSQL 固态存储
从docker到istio之三 - kubernetes集群编排
这是第三篇,kubernetes编排应用。
194 0
从docker到istio之三 - kubernetes集群编排
|
Kubernetes 负载均衡 监控
Google Kubernetes引擎上使用Istio简化微服务 — 第 III 部分(译)
Google Kubernetes引擎上使用Istio简化微服务 — 第 III 部分(译)
206 0