所以,这个问题是在不同的服务之间随机发生的(看起来)。
例如,我们有一个服务 A 需要与服务 B 通信,有时我们会收到此错误,但过了一段时间,该错误就会消失。而且这种错误并不经常发生。
发生这种情况时,我们会在服务 A 中看到错误日志抛出“上游连接错误”消息,但在服务 B 中却没有。所以我们认为这可能与 sidecar 有关。
我们注意到的一件事是,在服务 B 中,我们在 istio-proxy 容器中收到很多这样的错误消息:
[src/istio/mixerclient/report_batch.cc:109] Mixer Report failed with: UNAVAILABLE:upstream connect error or disconnect/reset before headers. reset reason: connection failure
根据文档,当请求进来时,envoy 会询问 Mixer 是否一切正常(授权和其他事情),如果 Mixer 没有回复,则请求未成功。这就是为什么存在一个名为policyCheckFailOpen 的选项。
我们将其设置为 false,我想这是一个正常的默认值,如果无法到达 Mixer,我们不希望请求通过,但为什么不能呢?
disablePolicyChecks: true
policyCheckFailOpen: false
controlPlaneSecurityEnabled: false
注意:istio-policy 与 istio-proxy sidecar 一起运行。那是对的吗?
我们在其他可能失败的服务中没有看到该错误。
我经常看到的另一个日志是,该日志发生在所有未以 root 身份运行并且在 YAML 文件中定义了 fsGroup 的服务中:
watchFileEvents: "/etc/certs": MODIFY|ATTRIB
watchFileEvents: "/etc/certs/..2020_02_10_09_41_46.891624651": MODIFY|ATTRIB
watchFileEvents: notifying
我正在寻找的线索之一是关于默认断路器值。会不会和这个有关系呢?
Thanks