Random “upstream connect error or disconnect/reset before headers” between services with Istio 1.3

妖精的绣舞 提交于 2020-08-09 07:12:10

问题


So, this problem is happening randomly (it seems) and between different services.

For example we have a service A which needs to talk to service B, and some times we get this error, but after a while, the error goes away. And this error doesn't happen too often.

When this happens, we see the error log in service A throwing the “upstream connect error” message, but none in service B. So we think it might be related with the sidecars.

One thing we notice is that in service B, we get a lot of this error messages in the istio-proxy container:

[src/istio/mixerclient/report_batch.cc:109] Mixer Report failed with: UNAVAILABLE:upstream connect error or disconnect/reset before headers. reset reason: connection failure

And according to documentation when a request comes in, envoy asks Mixer if everything is good (authorization and other things), and if Mixer doesn’t reply, the request is not success. So that’s why exists an option called policyCheckFailOpen. We have that in false, I guess is a sane default, we don’t want the request to go through if Mixer cannot be reached, but why can’t?

disablePolicyChecks: true
policyCheckFailOpen: false
controlPlaneSecurityEnabled: false

NOTE: istio-policy is running with the istio-proxy sidecar. Is that correct?

We don’t see that error in some other service which can also fail.

Another log that I can see a lot, and this one happens in all the services not running as root with fsGroup defined in the YAML files is:

watchFileEvents: "/etc/certs": MODIFY|ATTRIB
watchFileEvents: "/etc/certs/..2020_02_10_09_41_46.891624651": MODIFY|ATTRIB
watchFileEvents: notifying

One of the leads I'm chasing is about default circuitBreakers values. Could that be related with this?

Thanks


回答1:


The error you are seeing is because of a failure to establish a connection to istio-policy

Based on this github issue

Community members add two answers here which could help you with your issue


If mTLS is enabled globally make sure you set controlPlaneSecurityEnabled: true


I was facing the same issue, then I read about protocol selection. I realised the name of the port in the service definition should start with for example http-. This fixed the issue for me. And . if you face the issue still you might need to look at the tls-check for the pods and resolve it using destinationrules and policies.


istio-policy is running with the istio-proxy sidecar. Is that correct?

Yes, I just checked it and it's with sidecar.


Let me know if that help.



来源:https://stackoverflow.com/questions/60168167/random-upstream-connect-error-or-disconnect-reset-before-headers-between-servi

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!