istio 原理简介

前导

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

istio 1.5 之前架构

图片

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

  • 数据平面:由一组智能代理(Envoy)以 sidecar 模式部署,协调和控制所有服务之间的网络通信。

  • 控制平面:负责管理和配置代理路由流量,以及在运行时执行的政策。

图片

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

图片

istio 工作原理

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

Sidecar  注入 (envoy)

图片

详细的注入过程可以参考:blog.yingchi.io/posts/2020/…

图片

连接 (pilot)

图片

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

图片

保护(citadel)

图片

配置

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 之后架构

图片

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

所以新版本 istio 核心组件就只剩下一个:istiod

参考

猜你喜欢

转载自juejin.im/post/7032186040278335518