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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值