返回顶部
首页 > 资讯 > 精选 >kubernetes中实现Istio流量管理有什么好处
  • 212
分享到

kubernetes中实现Istio流量管理有什么好处

2023-06-04 17:06:20 212人浏览 八月长安
摘要

小编给大家分享一下kubernetes中实现Istio流量管理有什么好处,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一:简介Istio流量管理的核心组件是Pil

小编给大家分享一下kubernetes中实现Istio流量管理有什么好处,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

一:简介

Istio流量管理的核心组件是Pilot,它管理和配置部署在特定Istio服务网格中的所有Envoy代理实例。它允许您指定在Envoy代理之间使用什么样的路由流量规则,并配置故障恢复功能,如超时,重试和熔断器。它还维护了网格中所有服务的规范模型,并使用这个模型通过发现服务让Envoy了解网格中的其它实例。每个Envoy实例都会维护负载均衡信息,负载均衡信息是基于从Pilo获得的信息,以及其负载均衡池中的其它实例的定期健康检查。从而允许其在目标实例之间智能分配流量,同时遵循其指定的路由规则。

二:流量管理的好处

使用 Istio 的流量管理模型,本质上是将流量与基础设施扩容解耦,让运维人员可以通过 Pilot 指定流量遵循什么规则,而不是执行哪些 pod/VM 应该接收流量——Pilot 和智能 Envoy 代理会帮我们搞定。因此,例如,您可以通过 Pilot 指定特定服务的 5% 流量可以转到金丝雀版本,而不必考虑金丝雀部署的大小,或根据请求的内容将流量发送到特定版本

kubernetes中实现Istio流量管理有什么好处

将流量从基础设施扩展中解耦,这样就可以让 Istio 提供各种流量管理功能,这些功能在应用程序代码之外。除了 A/B 测试的动态请求路由,逐步推出和金丝雀发布之外,它还使用超时、重试和熔断器处理故障恢复,最后还可以通过故障注入来测试服务之间故障恢复策略的兼容性。这些功能都是通过在服务网格中部署的 Envoy sidecar/代理来实现的。

Pilot 负责部署在 Istio 服务网格中的 Envoy 实例的生命周期管理。

kubernetes中实现Istio流量管理有什么好处

如上图所示,Pilot维护了网格中的服务的规范表示,这个表示是独立于底层平台的。Pilot中的平台特定适配器负责适当填充此规范模型。例如,Pilot中的Kubernetes适配器实现必要的控制器来监控Kubernetes api server中pod注册信息,Ingress资源以及用于存储流量管理规则的第三方资源的更改。该数据被翻译成规范表示。Envoy特定配置是基于规范表示生成的。

Pilot公开了用于服务发现,负载均衡池和路由表的动态更新的API。这些API将Envoy从平台特有的细微差别中解脱出来,简化了设计并提升了跨平台的可移植性。

运维人员可以通过Pilot的Rules API指定高级流量管理规则。这些规则被翻译成低级配置,并通过discovery API分发到Envoy实例。

三:请求路由

如Pilot所述,特定网格中的服务的规范由Pilot维护。服务的Istio模型和在底层平台(Kubernetes,Mesos以及Cloud Foundry等)中的表达无关。特定平台的适配器负责从各自平台中获取元数据的各种字段,然后对服务模型进行填充。Istio引入服务版本的概念,可以通过版本(v1,v2)或环境(staging,prod)对服务进行进一步的细分。这些版本不一定是不同的API版本:它们可能是部署在不同环境(prod,staging或者dev等)中的同一服务的不同迭代。使用这种方式的常见场景包括A/B测试或金丝雀部署。Istio的流量路由规则可以根据服务版本来对服务之间流量进行附加控制。

四:服务之间的通信

kubernetes中实现Istio流量管理有什么好处

如上图所示,服务的客户端不知道服务不同版本间的差异。他们可以使用服务的主机名或者 IP 地址继续访问服务。Envoy sidecar/代理拦截并转发客户端和服务器之间的所有请求和响应。

运维人员使用 Pilot 指定路由规则,Envoy 根据这些规则动态地确定其服务版本的实际选择。该模型使应用程序代码能够将它从其依赖服务的演进中解耦出来,同时提供其他好处(参见 Mixer)。路由规则让 Envoy 能够根据诸如 header、与源/目的地相关联的标签和/或分配给每个版本的权重等标准来进行版本选择。

Istio 还为同一服务版本的多个实例提供流量负载均衡。可以在服务发现和负载均衡中找到更多信息。

Istio 不提供 DNS。应用程序可以尝试使用底层平台(kube-dns,mesos-dns 等)中存在的 DNS 服务来解析 FQDN。

五:服务发现和负载均衡

服务注册:Istio假定存在服务注册表,以跟踪应用程序中服务的pod/vm. 它还假设服务的新实例自动注册到服务注册表,并且不健康的实例将会被自动删除。诸如kubernetes,mesos等平台已经为基于容器的应用程序提供了这样的功能。

服务发现:Pilot使用来自服务注册的信息,并提供与平台无关的服务发现接口。网格中的Envoy实例执行服务发现,并相应地动态更新其负载均衡池。

kubernetes中实现Istio流量管理有什么好处

如上图所示,网格中的服务使用其 DNS 名称访问彼此。服务的所有 Http 流量都会通过 Envoy 自动重新路由。Envoy 在负载均衡池中的实例之间分发流量。虽然 Envoy 支持多种复杂的负载均衡算法,但 Istio 目前仅允许三种负载平衡模式:轮循、随机和带权重的最少请求。

除了负载均衡外,Envoy 还会定期检查池中每个实例的运行状况。Envoy 遵循熔断器风格模式,根据健康检查 API 调用的失败率将实例分类为不健康或健康。换句话说,当给定实例的健康检查失败次数超过预定阈值时,它将从负载均衡池中弹出。类似地,当通过的健康检查数超过预定阈值时,该实例将被添加回负载均衡池。您可以在处理故障中了解更多有关 Envoy 的故障处理功能。

服务可以通过使用 HTTP 503 响应健康检查来主动减轻负担。在这种情况下,服务实例将立即从调用者的负载均衡池中删除。

六:故障处理

Envoy提供了一套开箱即用,可选的故障恢复功能,对应用中的服务大有裨益。这些功能包括:

  1. 超时

  2. 具备超时预算,并能够在重试之间进行可变抖动(间隔)的有限重试功能

  3. 并发连接数和上游服务请求数限制

  4. 对负载均衡池中的每个成员进行主动(定期)运行健康检查

  5. 细粒度熔断器(被动健康检查)-适用于负载均衡池中的每个实例

  6. 这些功能可以使用Istio的流量管理规则在运行时进行动态配置

七:微调

Istio 的流量管理规则允许运维人员为每个服务/版本设置故障恢复的全局默认值。然而,服务的消费者也可以通过特殊的 HTTP 头提供的请求级别值覆盖超时和重试的默认值。在 Envoy 代理的实现中,对应的 Header 分别是 x-envoy-upstream-rq-timeout-ms 和 x-envoy-max-retries。

八:故障注入

虽然 Envoy sidecar/proxy 为在 Istio 上运行的服务提供了大量的故障恢复机制,但测试整个应用程序端到端的故障恢复能力依然是必须的。错误配置的故障恢复策略(例如,跨服务调用的不兼容/限制性超时)可能导致应用程序中的关键服务持续不可用,从而破坏用户体验。

Istio 能在不杀死 Pod 的情况下,将协议特定的故障注入到网络中,在 tcp 层制造数据包的延迟或损坏。我们的理由是,无论网络级别的故障如何,应用层观察到的故障都是一样的,并且可以在应用层注入更有意义的故障(例如,HTTP 错误代码),以检验和改善应用的弹性。

运维人员可以为符合特定条件的请求配置故障,还可以进一步限制遭受故障的请求的百分比。可以注入两种类型的故障:延迟和中断。延迟是计时故障,模拟网络延迟上升或上游服务超载的情况。中断是模拟上游服务的崩溃故障。中断通常以 HTTP 错误代码或 TCP 连接失败的形式表现。

以上是“kubernetes中实现Istio流量管理有什么好处”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: kubernetes中实现Istio流量管理有什么好处

本文链接: https://lsjlt.com/news/238629.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • kubernetes中实现Istio流量管理有什么好处
    小编给大家分享一下kubernetes中实现Istio流量管理有什么好处,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一:简介Istio流量管理的核心组件是Pil...
    99+
    2023-06-04
  • kubernetes中如何实现Istio流量管理
    这篇文章主要为大家展示了“kubernetes中如何实现Istio流量管理”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“kubernetes中如何实现Istio流量管理”这篇文章吧。一:简介Is...
    99+
    2023-06-04
  • kubernetes中Istio实现金丝雀发布原理是什么
    这期内容当中小编将会给大家带来有关kubernetes中Istio实现金丝雀发布原理是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一:简介    互联网产品用户数量庞大...
    99+
    2023-06-04
  • 项目管理系统是什么意思?有什么好处?
    市面上的项目管理系统琳琅满目,企业在选择上有很大的空间,但是仍是有很多企业用的并不如意,归根结底,是企业对项目管理系统不够熟悉所导致的,在此,小编就带大家来了解一下项目管理系统。1、项目管理系统的概念首先,我们想要了解项目管理系统,就要先知...
    99+
    2023-06-05
  • 使用无限流量的美国服务器有什么好处
    使用无限流量的美国服务器有以下几个好处: 更快的网页加载速度:无限流量的服务器可以提供更高的带宽和更快的连接速度,使用户能够更快...
    99+
    2024-04-09
    美国服务器 服务器
  • 香港服务器做监控管理有什么好处
    香港服务器做监控管理的好处有:1、能够防止香港服务器突发故障,并及时解决服务器问题;2、避免香港服务器误报,从而浪费维护资源以及时间;3、能够及时修补紧急漏洞,防止黑客利用入侵;4、能够阻止服务器攻击,提高香港服务器防御力;5、识别警报趋势...
    99+
    2024-04-02
  • Kafka在大数据处理和实时流处理中有什么应用场景
    Kafka 在大数据处理和实时流处理中有以下应用场景: 数据集成:Kafka 可以用作数据集成平台,将多个数据源的数据集成到一个...
    99+
    2024-03-14
    Kafka
  • Java AWT实现事件处理流程是什么
    今天小编给大家分享一下Java AWT实现事件处理流程是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。AWT的事件处理事...
    99+
    2023-06-30
  • GO语言中如何实现异步编程?有什么好处?
    随着互联网的不断发展,应用程序的性能要求越来越高,而异步编程已经成为了提高应用程序性能的关键技术之一。GO语言作为一门高效的编程语言,自然也有自己的异步编程实现方式。 一、GO语言中的异步编程 GO语言通过协程(goroutine)的方式...
    99+
    2023-09-27
    异步编程 文件 日志
  • Beam中怎么实现数据的批处理和流处理混合模式
    在Beam中实现数据的批处理和流处理混合模式可以通过使用Beam的UnboundedSource和BoundedSource接口来实...
    99+
    2024-03-15
    Beam
  • ASP 响应重定向有什么好处?bash 命令如何实现?
    ASP 响应重定向是一种非常重要的技术,在 ASP 网站开发中经常用到。它可以将用户请求的 URL 重定向到另外一个 URL,从而实现网站的跳转。那么 ASP 响应重定向有什么好处?本文将为大家详细介绍。 ASP 响应重定向的好处 提高...
    99+
    2023-08-16
    响应 重定向 bash
  • 用 C++ lambda 表达式实现函数式编程有什么好处?
    c++++ lambda 表达式为函数式编程带来了优势,包括:简洁性:匿名内联函数,提升代码可读性。代码重用:可传递或存储 lambda 表达式,方便重用代码。封装:提供封装代码段的方法...
    99+
    2024-04-17
    函数式编程 c++ 封装性 代码可读性
  • Java中ThreadLocal线程变量的实现原理是什么
    这篇文章主要介绍了Java中ThreadLocal线程变量的实现原理是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java中ThreadLocal线程变量的实现原理是什么文章都会有所收获,下面我们一起来看...
    99+
    2023-07-02
  • PHP和 ASP.NET在Session实现和管理机制上有什么差异
    本篇内容介绍了“PHP和 ASP.NET在Session实现和管理机制上有什么差异”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Sessio...
    99+
    2023-06-03
  • GO语言中的缓存管理:容器框架的实现原理是什么?
    随着网络技术的不断发展,数据量的不断增加,对数据的快速响应成为了当今互联网应用的重要问题。在这个背景下,缓存技术作为一种优化手段越来越受到开发者的关注。而GO语言因为其高效性、简洁性和可扩展性,成为了越来越多开发者选择的语言。那么,在GO...
    99+
    2023-07-24
    容器 框架 缓存
  • PHP中的数据类型和NumPy实时处理:有什么联系?
    PHP和NumPy是两个不同的编程语言,但在处理数据时有一些相似之处。在本文中,我们将探讨PHP中的数据类型和NumPy实时处理之间的联系,并展示一些示例代码。 PHP中的数据类型 PHP是一种动态类型的编程语言,它支持多种数据类型。以下是...
    99+
    2023-06-29
    数据类型 实时 numy
  • 自然语言处理对象在 Python API 中的实现原理是什么?
    自然语言处理(Natural Language Processing,NLP)是人工智能领域中的一个重要分支,它致力于让计算机能够理解、分析、生成人类语言。在这个领域中,Python 是一个备受欢迎的编程语言,因为它拥有丰富的库和工具,使得...
    99+
    2023-09-09
    api 自然语言处理 对象
  • PHP开发点餐系统中的配送管理功能实现方法是什么?
    PHP开发点餐系统中的配送管理功能实现方法是什么?餐饮行业发展迅速,越来越多的餐厅采用了在线点餐系统来提高效率和顾客体验。在这些系统中,配送管理功能是非常重要的一部分,它可以帮助餐厅实现高效的配送服务并提供优质的用户体验。本文将探讨PHP开...
    99+
    2023-11-01
    PHP实现方法 配送管理 开发点餐系统
  • 对象化自然语言处理:Python API 中的实现方式是什么?
    自然语言处理是人工智能领域的一个重要分支,其目的是让机器能够理解和处理人类的语言。Python 作为一种流行的编程语言,在自然语言处理领域也有着广泛的应用。Python 中提供了很多自然语言处理的库和 API,其中对象化的自然语言处理 A...
    99+
    2023-09-09
    api 自然语言处理 对象
  • Java并发编程中的文件处理:接口与实现的关系是什么?
    随着互联网的发展,文件处理已成为计算机编程中的一个非常重要的部分。特别是在Java并发编程中,文件处理更是不可或缺。在这篇文章中,我们将探讨Java并发编程中的文件处理,以及接口与实现的关系是什么。 一、Java文件处理 在Java中,文...
    99+
    2023-10-16
    并发 接口 文件
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作