0%

istio架构【数据平面与控制平面】

架构综述

Istio在逻辑上分为数据平面(data plane)和控制平面(control plane)两部分:

  • 数据平面:由一系列以sidecar形式部署的智能代理(Envoy)组成。这些代理可以调节和控制微服务及混合器(Mixer)之间的所有网络通信
  • 控制平面:负责管理和配置代理来路由流量,除此之外控制平面还配置混合器(Mixer)以执行策略和收集遥测数据

istio 架构

数据平面

  • Envoy是以C++开发的高性能代理,用于接管服务网格中所有服务的所有inboundoutbound流量。 Istio实际上利用了很多Envoy已有的特性,例如:服务的动态发现、负载均衡、TSL终止、HTTP/2和gRPC代理、断路器、健康检查、基于百分比流量拆分的灰度发布、故障注入以及丰富的度量指标。
  • Envoy以sidecar部署,与对应的服务在同一个Kubernetes Pod中。这样的部署方式使得Istio可以将大量了关于流量行为的信号作为属性(Attribute)提取出来。这些属性可以被用来在混合器(Mixer)中执行策略决策,并发送给监控系统,以提供整个Service Mesh的行为信息。Sidecar模式允许我们将istio的功能添加到现有的部署中,而无需重构或重写现有的代码。

控制平面

  • Pilot为 Envoy sidecar 提供服务发现功能,为智能路由(例如 A/B 测试、金丝雀部署等)和弹性(超时、重试、熔断器等)提供流量管理功能。 将控制流量行为的高级路由规则转换为Envoy的相关配置,并在运行时将它们传播到sidecar。

  • Mixer分为PolicyTelemetry两个子模块。Policy用于向Envoy提供准入策略控制,黑白名单控制,速率限制等相关策略;Telemetry为Envoy提供了数据上报和日志搜集服务,以用于监控告警和日志查询。

  • Galley在Istio中,承担配置的导入、处理和分发任务,为Istio提供了配置管理服务,提供在k8s服务端验证Istio的CRD 资源的合法性的方法,是整个控制面的配置管理中心。

  • Citadel主要关注安全,为服务之间以及与终端用户提供认证、授权、凭据管理等功能。

类比

istio 架构