我认为。。这东西还是有 BUG 吧。
断路器这事情卡了我很久,总算跑通了一小部分,如果不是我学艺不精的原因,Istio 你要努力啊。
首先运行一个最新版本的 Istio 安装,目前是 0.4 版本。
下载:https://github.com/istio/istio/releases
安装:
Workload
我们使用经典的 httpbin 作为服务方,具体 yaml 可以参考附件
客户端服务是一个自定义镜像,其中包含一些方便使用的工具,yaml 同样的参看附件。
注入 istio sidecar 的两个 Pod 运行起来之后,就可以尝试我们的断路器了。
缺省路由
必须有能和断路器匹配的缺省路由!
详情可以参考官方文档的一节。
https://istio.io/docs/concepts/traffic-management/rules-configuration.html
Circuit breaker
手册:https://istio.io/docs/reference/config/traffic-rules/destination-policies.html#istio.proxy.v1.config.CircuitBreaker.SimpleCircuitBreakerPolicy
按照文档上的只言片语,拼凑一个只允许一个连接,然后就会断掉的服务规则,注意,kind 字段是:
使用命令执行之后,可以用指令查询 Envoy 中的相关规则:。会看到类似下面的输出,其中的部分和我们的配置是一致的(如果没有缺省路由,就不会出现):
测试
使用 Sleep 镜像中的 Siege 进行测试:
会看到其成功率极低。如果使用等待规则刷新之后,重新执行测试,会重新看到 100% 的成功率。
问题
目前,以及的测试均未能成功,在 Envoy 的配置中也无法发现什么迹象。
似乎没有方法可以查询负载均衡池的状态。让验证变得非常困难。
附件
sleep.yaml
httpbin.yaml
领取专属 10元无门槛券
私享最新 技术干货