Istio Circuit Breaker 谁绊倒了它?

Istio Circuit Breaker who trips it?

我目前正在研究 1.6 版本的服务网格 Istio。数据平面(Envoy 代理)由控制平面配置。

  1. 当我通过创建目标规则配置断路器并且断路器打开时,客户端 sidecar 代理是否已经 return 503 或服务器端 sidecar 代理?
  2. 客户端 Sidecar 代理是自动将请求路由到另一个可用的服务实例,还是只是 return 将 503 发送到应用程序容器?

提前致谢!

  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"
  }

消息来自 istio-proxy 容器,该容器运行受 CircuitBreaker 请求发送到的政策影响的 Envoy。还有被中断的连接的源和目标的 IP 地址。

  1. 它将 return 503。有配置 retries 的选项,但是我没有测试它与 CircuitBreaker 的协同作用,如果重试实际上会转到不同的 pod,如果以前return出错了。

也看看我好不容易找到的CircuitBreaker最详细的解释

希望对您有所帮助。