赞
踩
istio服务网格在逻辑上分为数据平面和控制平面。
Istio使用Envoy代理的扩展版本。Envoy是用c++开发的高性能代理,用于协调服务网格中所有服务的所有入站和出站流量。Envoy代理是唯一与数据通信交互的Istio组件。
Envoy代理被部署为服务的边车,从逻辑上讲,它增加了Envoy的许多内置特性:
Dynamic service discovery 动态服务发现
Load balancing 负载均衡
TLS termination TLS 终止
HTTP/2 and gRPC proxies HTTP / 2 和gRPC代理
Circuit breakers 断路器
Health checks 健康检查
Staged rollouts with %-based traffic split 使用基于百分比的流量拆分的分阶段推出
Fault injection 断层注入
Rich metrics 丰富的指标
这种sidecar部署允许Istio提取大量关于流量行为的信号作为属性。Istio可以使用这些属性来执行策略决策,并将它们发送到监控系统,以提供关于整个网格的行为的信息。
sidecar代理模型还允许您向现有部署添加Istio功能,而不需要重新架构或重写代码。
由envoy代理启用的一些Istio功能和任务包括:
交通管制特点:使用丰富的路由规则执行细粒度的流量控制HTTP,gRPC,WebSocket 和 TCP 流量。
网络弹性功能:设置重试、故障转移、断路器和故障注入。
安全和身份验证功能:实施安全策略并实施通过配置 API 定义的访问控制和速率限制。
基于 Web Assembly 的可插拔扩展模型允许自定义策略实施和网格流量遥测生成。
Pilot针对提供智能路由(比如,A/B测试、金丝雀部署)的Envoy Sidecar,流量管理的能力提供了服务发现。针对弹性提供了超时,重试,断路保护等功能。
Pilot将控制流量行为的高级路由规则转换为特定于环境的配置,并在运行时将它们传播到边车。Pilot将特定于平台的服务发现机制抽象出来,并将它们合成为任何符合Envoy API的sidecar都可以使用的标准格式。
下图显示了平台适配器和Envoy代理如何交互:
这种耦合允许istio运行在比如kubernetes、Consul或者Nomad等平台上。
Citadel支持强大的服务对服务和终端用户身份验证,内置身份和凭证管理。您可以使用Citadel来升级服务网格中的未加密流量。使用Citadel,运营商可以执行基于服务身份的策略,而不是基于相对不稳定的第3层或第4层网络标识符。从0.5版开始,您可以使用Istio的授权特性来控制谁可以访问您的服务。
Galley是Istio的配置验证、注入、处理和分发组件。它负责将其余的Istio组件与从底层平台(例如Kubernetes)获取用户配置的细节隔离开来。
最大化的透明度:为了采用Istio,操作人员或开发人员需要做尽可能少的工作,才能从系统中获得真正的价值。为此,Istio可以自动将自己注入到服务之间的所有网络路径中。Istio使用sidecar代理来捕获流量,并在可能的情况下,在不更改已部署的应用程序代码的情况下,自动对网络层进行编程,以通过这些代理路由流量。在Kubernetes中,代理被注入到pods中,通过编写iptables规则捕获流量。一旦sidecar代理被注入并且流量路由被处理,Istio可以协调所有的流量。这个原则也适用于性能。当将Istio应用于部署时,操作人员会看到所提供功能的资源成本的最小增加。组件和api的设计必须考虑到性能和可伸缩性。
扩展性:随着操作人员和开发人员越来越依赖于Istio提供的功能,系统必须随着他们的需求而增长。当我们继续添加新特性时,最大的需求是扩展策略系统的能力,与其他策略和控制源的集成,以及将关于网格行为的信号传播到其他系统进行分析的能力。策略运行时支持用于插入其他服务的标准扩展机制。
可移植性:使用Istio的生态系统在许多方面都有所不同。Istio必须在任何云环境或本地环境中以最小的努力运行。将基于isti的服务移植到新环境的任务必须是琐碎的。使用Istio,您可以操作部署到多个环境中的单个服务。例如,可以在多个云上部署冗余。
策略的一致性:策略在服务之间的API调用上的应用提供了对网格行为的大量控制。然而,将策略应用于API级别上不一定表示的资源也同样重要。例如,对ML训练任务消耗的CPU数量应用配额比对发起工作的调用应用配额更有用。为此,Istio使用自己的API将策略系统维护为一个独立的服务,而不是将策略系统集成到代理sidecar中,从而允许服务根据需要直接与之集成。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。