栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

rpc error: code = Internal desc = server closed the stream without sending trailers

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

rpc error: code = Internal desc = server closed the stream without sending trailers

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/602452.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号