rpc error: code = Internal desc = server closed the stream without sending trailers
1、k8s+istio+envoyGRPC级联调用,其中一个客户端提示这个错误(可以认为这个错误是HTTP版本问题造成的)2、jaeger-query查看各服务间协议情况,发现出错的两服务间使用的是HTTP1.1,正常的服务间使用的是HTTP2.03、去掉envoy注入,一切正常,全部是HTTP2.0,基本认为是envoy相关的。4、查看encoy配置:istioctl ps cluster {p
1、k8s+istio+envoy GRPC级联调用,其中一个客户端提示这个错误(可以认为这个错误是HTTP版本问题造成的)
2、jaeger-query查看各服务间协议情况,发现出错的两服务间使用的是HTTP1.1,正常的服务间使用的是HTTP2.0
3、去掉envoy注入,一切正常,全部是HTTP2.0,基本认为是envoy相关的。
4、查看encoy配置:
istioctl ps cluster {pod-name}.{domain-name} --direction outbound --port xxxxx -o json
发现对端服务的type是EDS,实际上对端是stateful部署,访问方式是endpoint,endpoint方式istio不支持,必须是ORIGINAL_DST。
5、经检查,发现是服务端成了ClusterIP方式(应该是ClusterIP none才是对的)
对于ClusterIP方式部署的组件,coredns只生成service的解析,不能解析到endpoint
6、为什么会是通了,HTTP版本不对?
域名解析是在服务客户端POD里进行的(到coredns解析),可以解析到IP,但报文被envoy截取后,envoy不认识这种报文(envoy不支持endpoint,可能是因为http头里边域名带了pod名字,EDS的认为是匹配不到),所以走了默认协议,即HTTP1.1
更多推荐
所有评论(0)