在这篇文章中,我们会讲到istio最新版本以及istio最新版本所对应的知识,文章可能有点长,但是希望大家能够看完,增加自己的知识面,最重要的是希望能够对大家有所帮助,能够解决大家的问题,别忘了收藏本站哦。
Istio 1.10 版本发布并改版官网
北京时间 5 月 19 日,Istio 1.10 版本发布,这是 2021 年的第二个版本,继续优化 Istio 用户的日常操作。
新增亮点包括:
发现选择器功能:限制了 Istiod 监视的资源集,可以忽略与网格无关的命名空间变化,例如 Spark Job。
稳定的修订版标签:为部署多个控制平面提供了间接层,通过创建像 canary 和 prod 这样的标签,把使用这些标签的命名空间标记为修订版,并把特定的 Istiod 修订版与该标签联系起来。
在 1.10 版本中,Istio 进行了一些网络变化,更新 Envoy,默认在 eth0 而不是 lo 上向应用程序发送流量,这可能影响到一些应用程序的行为。
同时,Istio.io 网站进行了全新改版,采用了全新的外观,为用户提供更方便、更易于浏览的体验。
在 1.10 版本中,有两个功能将被废弃,具体详情请参阅 1.10 变更说明。
如果你已经将服务网格升级到 Istio 1.10,欢迎提供反馈,帮助我们了解哪些方面做得好,以及哪些方面需要改进。
想了解更多关于 Istio 的信息,可以参与 B 站直播,回顾 Istio 发布四周年的点点滴滴。
更多信息,请访问 Istio 官网。
Istio入门:什么是Istio?Istio的4个主要功能和实现原理
通过第1章的介绍,相信读者对服务网格已经有了初步的认识。作为服务网格的实现产品,Istio一经推出就备受瞩目,成为各大厂商和开发者争相追逐的“香馍馍”。我个人认为Istio会成为继Kubernetes之后的又一个明星级产品。Istio的官方网站这样定义自己。
它是一个完全开源的服务网格,以透明层的方式构建在现有分布式应用中。它也是一个提供了各种API的平台,可以与任何日志平台、监控系统或策略系统集成。Istio的多样化特性可以让你高效地运行分布式微服务架构,并提供一种统一的方式来保护、连接和监控微服务。
从上面的定义中可以了解到,Istio为微服务应用提供了一个完整的解决方案,可以以统一的方式去检测和管理微服务。同时,它还提供了管理流量、实施访问策略、收集数据等功能,而所有这些功能都对业务代码透明,即不需要修改业务代码就能实现。
有了Istio,就几乎可以不需要其他的微服务框架,也不需要自己去实现服务治理等功能,只要把网络层委托给Istio,它就能帮助完成这一系列的功能。简单来说,Istio就是一个提供了服务治理能力的服务网格。
对服务网格来讲,业务代码无侵入和网络层的全权代理是其重要的优势。我们来了解一下Istio的架构,看一看它是如何做到这两点的,并了解架构中的各个组件是如何协同工作并完成网络层功能的。
Istio的架构从逻辑上分成数据平面(Data Plane)和控制平面(Control Plane)。是否觉得似曾相识?没错,Kubernetes的架构也具有相似的结构,分为控制节点和计算节点。毫无疑问,这样的设计可以很好地解耦各个功能组件。
图2-1展示了由这些组件组成的Istio架构。
图2-1 Istio架构
从Istio的架构中可以看出,Istio追求尽可能的透明,通过各种解耦设计让系统对内对外都没有依赖。同时,它还提供了高度的扩展性。Istio认为随着应用的增长和服务的增多,扩展策略系统是最主要的需求,因此它被设计为以增量的方式进行扩展。可移植也是Istio在设计中充分考虑的因素,它被设计为支持多种平台,以便服务可以被方便地迁移到不同的云环境中(在撰写本书的过程中,Istio仍然深度依赖于Kubernetes平台)。
通过数据平面和控制平面的分离,各个组件都成为插件,这种开放和包容的设计思路相当具有前瞻性,我想这也就是其他服务网格产品都放弃了和它竞争而选择合作的重要原因。
下面对架构中的各组件做进一步介绍。
Envoy是Istio的数据平面,作为Sidecar代理,Envoy基于C++11开发而成,性能出色。除了具有强大的网络控制能力外,Envoy还可以将流量行为和数据提取出来发送给Mixer组件,用以进行监控。
Envoy在网络控制方面的主要功能如下。我们知道,在Kubernetes环境中,同一个Pod内的不同容器间共享网络栈,这一特性使得Sidecar可以接管进出这些容器的网络流量,这就是Sidecar模式的实现基础。Envoy是目前Istio默认的数据平面,实际上因为Istio灵活的架构,完全可以选择其他兼容的产品作为Sidecar。目前很多服务网格产品都可以作为Istio的数据平面并提供集成。
Pilot 是Istio实现流量管理的核心组件,它主要的作用是配置和管理Envoy代理。比如可以为代理之间设置特定的流量规则,或者配置超时、重试、熔断这样的弹性能力。Pilot会将控制流量行为的路由规则转换为Envoy的配置,并在运行时将它们广播到Envoy。另外,Pilot还能够把服务发现机制抽象出来并转换成API分发给Envoy,使得后者具有服务发现的能力。
Mixer的主要功能是提供策略控制,并从Envoy代理收集遥测数据。每次网络通信时Envoy代理都会向Mixer发出预检要求,用来检测调用者的合法性。调用之后Envoy代理会发送遥测数据供Mixer收集。适配器是Mixer的重要组成部分,它本质上是一个插件模型,每个插件叫作适配器。这项特性使得Mixer可以接入几乎任意的(只要定义好接口)后端基础设施。比如可以选择接入不同的日志收集器、监控工具和授权工具等;可以在运行时切换不同的适配器或者是打开(关闭)它们;还可以自定义适配器以满足特定需求。适配器极大地提高了Mixer的扩展性,它让Istio的功能拥有了更多可能性。
Citadel是与安全相关的组件,主要负责密钥和证书的管理。它可以提供服务间和终端用户的身份认证,还可以加密服务网格中的流量。在后面介绍安全主题的第8章中,我们会详细说明它是如何和其他组件协同工作的。
在2019年3月份发布的1.1版本中,Galley作为一个独立的组件被添加到了架构当中(在此之前的版本中Galley并未独立出现),它现在是Istio主要的配置管理组件,负责配置的获取、处理和分发。Galley使用了一种叫作MCP(Mesh Configuration Protocol,网格配置协议)的协议与其他组件进行通信。
下面详细地介绍一下Istio的4个主要功能和实现原理。
流量管理是微服务应用最大的痛点之一。Istio可以轻松地实现各种维度的流量控制,通过Pilot和Envoy这两个组件实现,将流量和基础设施进行了解耦。Pilot负责配置规则,并把规则分发到Envoy代理去实施;而Envoy按照规则执行各种流量管理的功能,比如动态请求路由,超时、重试和熔断,还可以通过故障注入来测试服务之间的容错能力。
入口**(Ingress)和出口**(Egress)用于在整个系统的入口和出口处部署代理,使得所有流入和流出的流量都由代理进行转发,把守着进入和流出服务网格的流量。
服务发现和负载均衡通过Pilot和Envoy协作完成,Pilot组件会从平台获取服务的注册信息,并提供服务发现的接口,Envoy获得这些信息并更新到自己的负载均衡池。Envoy会定期地对池中的实例进行健康检查,剔除离线的实例,保证服务信息的实时性。
Istio的故障处理和故障注入功能都由Envoy代理完成。Envoy提供了一整套现成的故障处理机制,比如超时、重试、限流和熔断等,这些功能都能够以规则的形式进行动态配置,并且执行运行时修改。
策略控制是依靠Mixer完成的。Envoy代理在每次网络请求时,都会调用Mixer进行预先检查,确定是否满足对应的策略。同时,Mixer又可以根据这些来自流量的数据,进行指标数据的采集和汇总,这就是遥测功能。
可视化是通过集成各种监控、追踪工具实现的,以便我们以可视化的方式(网页)直观地查看整个系统的运行状态。
Istio的安全架构是由多个组件协同完成的。Citadel是负责安全的主要组件,用于密钥和证书的管理;Pilot会将授权策略等信息分发给Envoy代理;Envoy根据策略实现服务间的安全通信;Mixer负责管理授权等工作。认证和授权功能沿用了Kubernetes中的授权方式:RBAC(基于角色的访问控制)。
有了Istio,就几乎可以不需要其他的微服务框架,也不需要自己去实现服务治理等功能,只要把网络层委托给Istio,它就能帮助完成这一系列的功能。简单来说,Istio就是一个提供了服务治理能力的服务网格。《Istio实战指南》是Istio服务网格技术的入门图书,适合有一定Kubernetes基础,对服务网格和Istio技术感兴趣的开发人员和运维人员阅读。
END,本文到此结束,如果能对您有所帮助,还希望关注本网站哦!
版权声明
本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。