在之前的最佳实践中,已经带大家通过一系列的实践任务领略了Istio的无穷魅力.今天,将向大家介绍如何用Istio实现流量熔断. 熔断机制是创建弹性微服务应用程序的重要模式.熔断可以帮助您自由控制故障影响的范围.网络延迟的峰值以及抵御其他一些来自外部的恶意攻击等场景. 在接下来的任务中,idou老师将通过配置一个熔断器来详细介绍如何在Istio中实现熔断,以及背后的原理. 首先,我们需要添加一个应用程序来模拟访问网络中的通信.接着我们按照前面Istio实践中所要求的将Sidecar注入进应用中,然…
流量迁移是流量管理的一个重要功能.istio提供的流量管理功能将流量从基础设施扩展中解耦,支持动态请求路由,故障注入.超时重试.熔断和流量迁移等.流量迁移的主要目的是将流量从微服务的某一版本的逐步迁移至另一个版本,如在新旧版本之间进行流量切换.本文通过一个简单的用例介绍如何使用istio进行流量迁移. Figure 1 bookinfo示意图 本文使用一个bookinfo的典型例子.通过istio的命令配置规则,将流量从reviews的版本v1逐步迁移到版本v3.在下面的例子中,应用基于权重路由…
要介绍istio请求路由,我们不由得先从pilot 和 envoy开始谈起. 在服务网格中,Pilot管理和配置所有的envoy实例.在pilot中,你几乎可以配置所有的关于流量导向规则及其他故障恢复规则.而Envoy不仅会获得从pilot拿到的基本负载均衡信息,同时周期性的健康检查,也会告诉所有的envoy其他的实例现在的运行状况.负载均衡信息,及健康检查的信息可以使envoy更加智能的去分发流量. 在上述的pilot结构中,不难理解,platform adapter作为平台适配器,可以使is…
在前面的文章中,大家都已经熟悉了Istio的故障注入和流量迁移.这两个方面的功能都是Istio流量治理的一部分.今天将继续带大家了解Istio的另一项功能,关于请求超时的管理. 首先我们可以通过一个简单的Bookinfo的微服务应用程序来动手实践一下Istio是如何实现请求超时的管理.看过idou老师前面文章的老司机应该都已经对Bookinfo这个实例驾轻就熟了,当然还存在部分被idou老师的文采刚吸引过来的新同学. 下面先简单的介绍一下Bookinfo这个样例应用整体架构,以便我们更好地理解I…
使用Prometheus进行监控是Istio提供的监控能力之一.Istio提供丰富的监控能力,为网格中的服务收集遥测数据.Mixer是负责提供策略控制和遥测收集的Istio组件. Istio通过Mixer实现流量监控的基本流程如下图:每个pod内有一个service和proxy,Envoy容器实现proxy功能,对流入和流出pod的流量进行管理.认证和控制.Mixer则主要负责访问控制和遥测信息收集.当某个服务被请求时,首先会请求istio-policy服务,来判定是否具备访问资格,若具备资格则…
前言 在Istio的世界里,如果想把外部的请求流量引入网格,你需要认识并会学会配置Istio Ingress Gateway 什么是Ingress Gateway 由于Kubernetes  Ingress API只能支持最基本的HTTP路由,使用Kubernetes Ingress资源来配置外部流量的方式不能满足需求.因此Istio v1alpha3 routing API引入新的Istio Ingress Gateway取代Kubernetes  Ingress. Gateway为HTTP/…
大家都知道istio可以帮助我们实现灰度发布.流量监控.流量治理等功能.每一个功能都帮助我们在不同场景中实现不同的业务.那Istio是如何帮助我们实现监控和日志采集的呢? 这里我们依然以Bookinfo应用程序作为贯穿此任务的示例程序.首先在集群中安装并部署Istio. 1  收集遥测数据 创建一个新的YAML文件,用来保存Istio将自动生成和收集的新度量标准和日志流的配置.如下图所示: 通过命令$ kubectl apply -f new_telemetry.yaml推送刚刚配置的YAML文…
本文主要介绍在使用Istio时如何访问集群外服务,即对出口流量的管理. 默认安装的Istio是不能直接对集群外部服务进行访问的,如果需要将外部服务暴露给 Istio 集群中的客户端,目前有两种方案: 1. 配置ServiceEntry 2. 配置global.proxy.includeIPRanges 配置serviceEntry访问外部服务 ServiceEntry用于将额外的条目添加到Istio内部维护的服务注册表中,从而让网格中自动发现的服务能够访问和路由到这些手动加入的服务. Servi…
使用 Istio 可以很方便地实现速率限制.本文介绍了速率限制的使用场景,使用 memquota\redisquota adapter 实现速率限制的方法,通过配置 rule 实现有条件的速率限制,以及速率限制的原理. 1 使用场景 在许多场景下都需要对服务进行速率限制. 一种常见的场景是防止来自外部服务的过度调用(如爬虫). 另一种常见的场景是调用某些收费的外部服务,但是提供了免费配额,可以使用速率限制确保只使用免费的配额. 2  环境准备 在 Kubernetes 集群上部署 Istio 部…
大家都知道istio可以帮助我们实现灰度发布.流量监控.流量治理等功能.每一个功能都帮助我们在不同场景中实现不同的业务.那Istio是如何帮助我们实现监控和日志采集的呢? 这里我们依然以Bookinfo应用程序作为贯穿此任务的示例程序.首先在集群中安装并部署Istio. 1 收集遥测数据 创建一个新的YAML文件,用来保存Istio将自动生成和收集的新度量标准和日志流的配置.如下图所示: 通过命令$ kubectl apply -f new_telemetry.yaml推送刚刚配置的YAML文件…