自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易

这篇具有很好参考价值的文章主要介绍了自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在生产环境中,直接登录服务器是非常不方便的,我们可以使用Kiali配置Istio的流量管理。

本文以Istio官方提供的Bookinfo应用示例为例,使用Kiali配置Istio的流量管理。Bookinfo应用的架构图如下:

自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易

其中,包含四个单独的微服务:

  • productpage:调用 detailsreviews 两个服务,用来生成页面。
  • details:包含了书籍的信息。
  • reviews:包含了书籍相关的评论。它还会调用 ratings 微服务。
  • rating:包含了由书籍评价组成的评级信息。

其中,reviews 服务有 3 个版本:

  • v1 版本不会调用 ratings 服务。
  • v2 版本会调用 ratings 服务,并使用 1 到 5 个黑色星形图标来显示评分信息。
  • v3 版本会调用 ratings 服务,并使用 1 到 5 个红色星形图标来显示评分信息。

创建路由规则

目标:把reviews 服务的所有流量都路由到v1版本

进入reviews 服务的Services页面,点击“Actions”后,点击“Request Routing”,如下图:

自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易

在“Create Request Routing”的弹窗中,选择“Route To”标签页,把reviews-v1的权重调节到100%,如下图:

自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易

点击“Add Rule”按钮,会添加一个针对所有请求的路由规则,如下图:

自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易

点击“Create”按钮,对应的虚拟服务(Virtual Service)和目标规则(DestinationRule)就创建好了,如下图:

自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易

访问几次productpage页面,可以看到一直是没有星形图标的页面,如下图:

自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易

文章持续更新,微信搜索「万猫学社」第一时间阅读,关注后回复「电子书」,免费获取12本Java必读技术书籍。

基于用户身份的路由

目标:来自名为 OneMore 的用户的所有流量都路由到v2版本。

Istio 对用户身份没有任何特殊的内置机制。事实上,productpage服务在所有到 reviews 服务的 HTTP 请求中都增加了一个自定义的 end-user 请求头,其值为用户名。

仍然进入reviews 服务的Services页面,点击“Actions”后,点击“Request Routing”。

在“Update Request Routing”的弹窗中,选择“Request Matching”标签页,进行如下配置:

自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易

点击“Add Match”后,“Matching selected”变为“headers [end-user] exact OneMore”,如下图:

自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易

选择“Route To”标签页,把reviews-v2的权重调节到100%,如下图:

自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易

点击“Add Rule”按钮,会添加一个路由规则,如下图:

自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易

看到了如下的错误信息:

Match 'Any request' is defined in a previous rule. This rule is not accessible.

我们把这个路由规则的优先级调高一下:

自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易

调整后,没有错误信息了,点击“Update”。使用 OneMore 登录后,访问productpage页面,可以看到使用黑色星形图标来显示评分信息的页面,如下图:

自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易

文章持续更新,微信搜索「万猫学社」第一时间阅读,关注后回复「电子书」,免费获取12本Java必读技术书籍。

注入 HTTP 延迟故障

目标:用户 OneMore 访问时, ratings 服务注入一个 7 秒的延迟,productpage页面在大约 7 秒钟加载完成并且没有错误。

进入ratings 服务的Services页面,点击“Actions”后,点击“Request Routing”。

在“Create Request Routing”的弹窗中,选择“Request Matching”标签页,进行如下配置:

自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易

点击“Add Match”后,“Matching selected”变为“headers [end-user] exact OneMore”,如下图:

自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易

选择“Fault Injection”标签页,开启“Add HTTP Delay”,修改“Fixed Delay”为7s,如下图:

自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易

点击“Add Rule”按钮,会添加一个路由规则,如下图:

自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易

点击“Create”按钮,对应的虚拟服务(Virtual Service)和目标规则(DestinationRule)就创建好了,如下图:

自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易

使用 OneMore 登录后,访问productpage页面,如下图:

自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易

没有达到我们预期的结果,出现了一个问题:Reviews 部分显示了错误消息:

Sorry, product reviews are currently unavailable for this book.

并且productpage页面加载实际上用了大约 6s。

查看代码后,发现了一个 bug。微服务中有硬编码超时,导致 reviews 服务失败。

按照预期,我们引入的 7 秒延迟不会影响到 reviews 服务,因为 reviewsratings 服务间的超时被硬编码为 10 秒。
但是,在 productpagereviews 服务之间也有一个 3 秒的硬编码的超时,再加 1 次重试,一共 6 秒。
结果,productpagereviews 的调用在 6 秒后提前超时并抛出错误了。

我们把延迟修改为2s,再尝试一下,才得到了我们预期的结果:大约 2 秒钟加载完成并且没有错误,如下图:

自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易

注入 HTTP 中止故障

目标:用户 OneMore 访问时, ratings 服务注入一个中止故障,productpage 页面能够立即被加载,同时显示 “Ratings service is currently unavailable” 这样的消息。

进入ratings 服务的Services页面,点击“Actions”后,点击“Request Routing”。

先把上个例子的路由规则删除,否则报“A Rule with same matching criteria is already added.”的错误。

在“Update Request Routing”的弹窗中,选择“Request Matching”标签页,进行如下配置:

自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易

点击“Add Match”后,“Matching selected”变为“headers [end-user] exact OneMore”,如下图:

自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易

选择“Fault Injection”标签页,开启“Add HTTP Abort”,修改“HTTP Status Code”为500,如下图:

自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易

点击“Add Rule”按钮,会添加一个路由规则,如下图:

自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易

点击“Update”。使用 OneMore 登录后,访问productpage页面,如下图:

自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易

达到了我们预期的效果。

文章持续更新,微信搜索「万猫学社」第一时间阅读,关注后回复「电子书」,免费获取12本Java必读技术书籍。

设置请求超时

首先,用户 OneMore 访问时, ratings 服务注入一个 2 秒的延迟,productpage页面在大约 2 秒钟加载完成并且没有错误。

按照上文注入 HTTP 延迟故障进行操作,不再赘述,效果如下:

自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易

目标:用户 OneMore 访问时, reviews 服务的请求超时设置为 0.5 秒,同时显示 “Sorry, product reviews are currently unavailable for this book.” 这样的消息。

进入reviews 服务的Services页面,点击“Actions”后,点击“Request Routing”。

在“Update Request Routing”的弹窗中,选择“Request Matching”标签页,进行如下配置:

自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易

点击“Add Match”后,“Matching selected”变为“headers [end-user] exact OneMore”,如下图:

自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易

选择“Route To”标签页,把reviews-v2的权重调节到100%,如下图:

自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易

选择“Request Timeouts”标签页,开启“Add HTTP Timeout”,修改“Timeout”为0.5s,如下图:

自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易

点击“Add Rule”按钮,会添加一个路由规则,如下图:

自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易

看到了如下的错误信息:

Match 'Any request' is defined in a previous rule. This rule is not accessible.

我们把这个路由规则的优先级调高一下:

自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易

调整后,没有错误信息了,点击“Update”。使用 OneMore 登录后,访问productpage页面如下图:

自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易

可是显示了预期的错误信息,但是访问页面却用了1秒钟,这是为什么呢?
这是因为 productpage 服务中存在硬编码重试,它在返回页面之前调用 reviews 服务超时两次。

文章持续更新,微信搜索「万猫学社」第一时间阅读,关注后回复「电子书」,免费获取12本Java必读技术书籍。

设置请求重试

首先,用户 OneMore 访问时, ratings 服务注入一个 2 秒的延迟,productpage页面在大约 2 秒钟加载完成并且没有错误。

按照上文注入 HTTP 延迟故障进行操作,不再赘述,效果如下:

自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易

目标:用户 OneMore 访问时, reviews 服务的请求重试次数为2次,重试超时时间为 0.5 秒,同时显示 “Sorry, product reviews are currently unavailable for this book.” 这样的错误消息。

进入reviews 服务的Services页面,点击“Actions”后,点击“Request Routing”。

在“Update Request Routing”的弹窗中,选择“Request Matching”标签页,进行如下配置:

自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易

点击“Add Match”后,“Matching selected”变为“headers [end-user] exact OneMore”,如下图:

自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易

选择“Route To”标签页,把reviews-v2的权重调节到100%,如下图:

自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易

选择“Request Timeouts”标签页,开启“Add HTTP Retry”,修改“Attempts”为2,修改“Per Try Timeout”为0.5s,如下图:

自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易

点击“Add Rule”按钮,会添加一个路由规则,如下图:

自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易

看到了如下的错误信息:

Match 'Any request' is defined in a previous rule. This rule is not accessible.

我们把这个路由规则的优先级调高一下:

自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易

调整后,没有错误信息了,点击“Update”。使用 OneMore 登录后,访问productpage页面如下图:

自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易

可是显示了预期的错误信息,但是访问页面却用了3秒钟,这是为什么呢?
还是因为 productpage 服务中存在硬编码重试,它在返回页面之前调用 reviews 服务超时两次。

感谢你这么帅,还给我点赞

微信公众号:万猫学社

微信扫描二维码

关注后回复「电子书」

获取12本Java必读技术书籍文章来源地址https://www.toymoban.com/news/detail-465433.html

自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易

到了这里,关于自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Istio 流量管理 serviceEntry 出口流量管理

    无论是vs还是dr这些都是入口的流量。对于pod来说也会有出去的流量的。 除了对进来的流量做有效的控制之外,其实也可以控制出去的流量。istio-egress是出口网关,pod出去的时候要经过egress-gateway到达外界的某个终端。 hosts: - www.baidu.com  这个是pod要访问的服务器。pod里面设置

    2024年02月12日
    浏览(40)
  • 深入理解 Istio 流量管理的超时时间设置

    部署 httpbin 服务: 部署 sleep 服务: httpbin 服务作为接收请求的服务端, sleep 服务作为发送请求的客户端。 在 sleep 服务中向 httpbin 服务发出请求: 返回结果如下: 可以看到,请求大约在 5 秒返回 200 (OK)。 创建虚拟服务,访问 httpbin 服务时,请求超时设置为 3 秒: 再次访

    2024年02月08日
    浏览(49)
  • K8S之istio流量控制管理(十七)

    一,istio介绍 1、istio架构   结合上图我们来理解Istio的各组件的功能及相互之间的协作方式。 1. 自动注入:在创建应用程序时自动注入 Sidecar代理Envoy程序。在 Kubernetes中创建 Pod时,Kube-apiserver调用控制面组件的 Sidecar-Injector服务,自动修改应用程序的描述信息并注入Sidecar。在

    2024年02月09日
    浏览(46)
  • Istio 探索:微服务的流量管理、安全性和策略加固

    🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🐅🐾猫头虎建议程序员必备技术栈一览表📖: 🛠️ 全栈技术 Full Stack : 📚 MERN/MEAN/MEVN Stack | 🌐 Jamstack | 🌍 GraphQL | 🔁 RESTful API | ⚡ WebSockets | 🔄 CI/CD | 🌐 Git Version Control | 🔧 DevOps 🌐 前端技术 Frontend : 🖋️ HTML CSS |

    2024年02月09日
    浏览(45)
  • Istio是一个开源的基于 envoy proxy 的服务网格工具,它通过提供应用层面的流量管理和安全保障能力,帮助企业构建一个完整的服务网络体系

    作者:禅与计算机程序设计艺术 容器编排工具通常都提供微服务架构,其中包括服务注册与发现、负载均衡、流量控制和熔断等功能。随着云计算的普及,越来越多的人开始使用这些容器编排工具,包括Docker Swarm、Kubernetes、Mesos等。除了提供容器集群管理之外,许多容器编排

    2024年02月07日
    浏览(52)
  • Istio实战(九)-Envoy 流量劫持

    Envoy 是一款面向 Service Mesh 的高性能网络代理服务。它与应用程序并行运行,通过以平台无关的方式提供通用功能来抽象网络。当基础架构中的所有服务流量都通过 Envoy 网格时,通过一致的可观测性,很容易地查看问题区域,调整整体性能。 Envoy也是istio的核心组件之一,以

    2024年02月08日
    浏览(44)
  • k8s整合istio配置gateway入口、配置集群内部服务调用管理

    curl -HHost:tomcat.shenshuxin.cn “http://node101:32318” 端口号是ingressgateway服务的nodeport 查看方式: kubectl get service -n istio-system | grep istio-ingressgateway 找到80端口对应的nodeport即可 注意部署的两个deployment需要指定一下版本标签 version: ?? 注意这里的hosts名称(demo-tomcat-for-istio-name)要和上面

    2024年02月12日
    浏览(38)
  • 如何理解 Istio Ingress, 它与 API Gateway 有什么区别?东西流量?南北流量?

    这三者都和流量治理密切相关,那么流量治理在过去和现在有什么区别呢?都是如何做的呢? 在学习istio的时候对流量管理加深了理解。什么是东西流量?什么是南北流量? 假如让你说出k8s中的服务暴露的方式? 你可以说几种? 我面试也遇到过这个问题。 东西流量 mesh(No

    2024年02月11日
    浏览(50)
  • Istio——为微服务构建一个通用的流量控制平面

    作者:禅与计算机程序设计艺术 随着云计算、容器化和微服务架构的普及,越来越多的公司和组织开始采用基于微服务架构的分布式应用开发模式。然而,在真正将这些微服务部署到生产环境后,如何实现对应用的流量管理以及安全防护就成为一个棘手的问题。微服务架构虽

    2024年02月07日
    浏览(53)
  • 扩展点都不知道不要说你用了Spring Boot

    哈哈,本次有点标题党的嫌疑了,话又说回来,如果只停留在Spring Boot的基本的CRUD层面,未免也太过局限了,当需要去扩展一些功能,写一些组件的时候,就感觉无从下手了,所以本次,我们从一个标题党开始,了解一下Spring Boot 的扩展点,可以系统的了解记忆一下, 此文不

    2024年02月15日
    浏览(75)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包