【问题标题】:Istio Circuit Breaker who trips it?Istio Circuit Breaker 谁跳闸了?
【发布时间】:2020-09-24 11:25:30
【问题描述】:
我目前正在研究 Istio 1.6 版本的服务网格。数据平面(Envoy 代理)由控制平面配置。
- 当我通过创建目标规则配置断路器并且断路器打开时,客户端 Sidecar 代理是否已经返回 503 或服务器端 Sidecar 代理?
- 客户端 Sidecar 代理是自动将请求路由到另一个可用的服务实例,还是简单地将 503 返回到应用程序容器?
提前致谢!
【问题讨论】:
标签:
istio
circuit-breaker
【解决方案1】:
- 在日志条目中,您可以检查它们以找出被断路器停止的连接的两端。来自
istio-proxy 容器的日志消息中存在连接双方的 IP 地址。
{
insertId: "..."
labels: {
k8s-pod/app: "circuitbreaker-jdwa8424"
k8s-pod/pod-template-hash: "..."
}
logName: ".../logs/stdout"
receiveTimestamp: "2020-06-09T05:59:30.209882320Z"
resource: {
labels: {
cluster_name: "..."
container_name: "istio-proxy"
location: "..."
namespace_name: "circuit"
pod_name: "circuit-service-a31cb334d-66qeq"
project_id: "..."
}
type: "k8s_container"
}
severity: "INFO"
textPayload: "[2020-06-09T05:59:27.854Z] UO 0 0 0 "-" - - 172.207.3.243:443 10.1.13.216:36774 "
timestamp: "2020-06-09TT05:59:28.071001549Z"
}
消息来自运行 Envoy 的 istio-proxy 容器,该容器受请求发送到的 CircuitBreaker 策略的影响。还有中断连接的源和目标的 IP 地址。
- 它将返回 503。有配置 retries 的选项,但是我没有测试它与
CircuitBreaker 的协同作用,如果之前返回错误,重试实际上会转到不同的 pod。
也看看我找到的CircuitBreaker最详细的解释。
希望对你有帮助。