Istio 功能介绍
Service Mesh 的基本概念相信读者都已经清楚了,本节重点介绍 Istio 的功能,简单来说,Istio 是一种功能丰富的 Service Mesh 的解决方案,那么 Istio 又有哪些功能呢?
什么是 Istio
简单来说,Istio 是一种 Service Mesh 的解决方案,它针对现有的服务网络,提供了一种简单的方式将连接、安全、控制和观测的模块,与应用程序或服务隔离开来,从而使得开发人员可以将更多的精力放在核心的业务逻辑上。
Istio 核心功能介绍
Istio 提供以下核心功能,以使得服务能在 Service Mesh 内顺利被使用。
流量控制
Istio 可以支持用户配置简单的规则配置和流量路由,从而使得用户可以方便的控制服务之间的流量控制。Istio简化了服务级属性(如熔断器、超时和重试)的配置,并且更加方便的落地A/B测试、金丝雀发布以及按流量百分比划分的分阶段发布。
比如流量路由配置,一个典型的例子是将流量发送到被指定为服务子集的服务的不同版本。客户端将虚拟服务视为一个单一实体,将请求发送至虚拟服务主机,然后 Envoy 根据虚拟服务规则把流量路由到不同的版本。例如,“20% 的调用转到新版本”或“将这些用户的调用转到版本 2”。这允许您创建一个金丝雀发布,逐步增加发送到新版本服务的流量百分比。流量路由完全独立于实例部署,这意味着实现新版本服务的实例可以根据流量的负载来伸缩,完全不影响流量路由。而 Kubernetes 这样的容器编排平台只支持基于实例缩放的流量分发,不能满足新增实例切换流量的场景。
除了使用流量路由配置来控制流量以外,Istio 还提供了可选的故障恢复和故障注入功能,您可以在运行时动态配置这些功能。使用这些特性可以让您的应用程序运行稳定,确保服务网格能够容忍故障节点,并防止局部故障级联影响到其他节点。比如设置超时、重试、熔断器以及故障注入,都可以在对应用程序完全透明的情况下注入对应的策略。
Istio 拥有更好的对流量的可观测性以及开箱即用的故障恢复特性,也就是说用户可以更加方便的捕获故障或问题并且快速修复,这样无论是遇到任何异常情况都可以使调用链路更加可靠更加健壮。
安全
Istio 的安全特性提供了底层的安全通信通道,并且为大规模的服务通信管理认证、授权和加密。这样应用的开发人员只需要专注于应用级别的安全,完全不用考虑更加底层的安全机制。有了 Istio,服务通信在默认情况下就是受保护的,可以让用户在不同的协议通信机制下实施一致的策略,并且这种策略不需要用户修改任何应用程序的代码。 Istio 是与 Kubernetes 的网络策略一起使用的,然而它可以比基础设施层更强大,它可以在应用层面保护到 pod 到 pod 通信以及服务到服务之间的通信。
可观察性
Istio 提供了可视化的监控能力,通过这个能力可以让用户了解到服务的上下游调用关系以及性能数据,它提供的定制化的控制台可以提供对所有服务的可视化能力,可以让用户快速定位到是哪个环节出了性能问题。 Istio 的 Mixer 组件负责策略控制和遥测数据收集。它通过Prometheus、kiali等组件提供给运维人员更加细粒度的交互控制,例如接口调用等。 所有可观察性的特性使得用户更加有效地设置、监控和加强服务的 SLO (服务水平目标)。
Istio 的平台支持
Istio 独立于平台,被设计为可以在各种环境中运行,包括跨云、内部环境、Kubernetes 等等。您可以在 Kubernetes 或是装有 Consul 的 Nomad 环境上部署 Istio。Istio 目前支持:
- Kubernetes 上的服务部署
- 基于 Consul 的服务注册
- 服务运行在独立的虚拟机上