在k8s中调试gRPC服务?

时间:2018-02-05 21:11:40

标签: web-services kubernetes grpc

我已经在kubernetes设立了一项服务。但是,我无法通过TCP达成目标。下一步调试步骤是什么?

  • 我已检查过服务日志,已启动该流程
  • 我已检查过服务端点 - 它正确找到了pod
  • 我已经将bash放入服务舱,但是,我发现服务中的互联网连接速度很慢(我已经检查了节点IO,并且它并不是最高的)是)。我的计划是安装telnet并检查我是否可以手动连接到服务gRPC服务器。
  • 我尝试过把#34; 0.0.0.0/50051"和" [::]:50051"作为具有相同结果的服务器地址/端口 - 无法正常工作
  • 我尝试使用localhost和service端口转发,但是通过port-forwards连接时它不起作用
  • 当然,在部署到云中之前,本地测试服务。它按预期工作。
  • Kubernetes通过他们提供的引擎安装在谷歌云平台上。

对于kubernetes yaml我已经设置了TCP服务,并且我几乎复制/粘贴/修改了另一个暴露JSON REST api服务器的服务。我可以在调试中采取哪些后续步骤?

编辑1:

https://pastebin.com/PweEv6gc这是我的kubernetes-helm配置。我试图在群集中到达它。当我尝试使用kubectl port-forward 50051 50051实用程序在群集外部访问它时。

编辑2:

我试图启动普通的烧瓶网络服务器,它可以使用特定的pod / k8s /端口配置。这个问题与grpc有关。或者它的端口绑定。

我已经使用过:

server.add_insecure_port("0.0.0.0:50051")
server.start()

并设法通过节点端口连接(10.132.0.25:31128,我从kubectl get service oracle获得但在集群内它表示无法访问。

编辑3:

我在kubernetes和我的localhost中尝试了相同的脚本。

使用10.132.0.25:31158(nodeport): 在我的localhost上,它通常连接到gRPC服务器。 在k8s内部,它不起作用

使用oracle:50051 在k8s内部,它不起作用

更新: 发现了这个错误....很难。设置了HTTP代理,并且在测试的pod上我使用了HTTP代理,它可能没有实现http / 2(tinyproxy)。如何打印gRPC调试日志以获取此信息?

Update2:https://github.com/grpc/grpc/blob/master/doc/environment_variables.md

用于gRPC更好的调试日志

0 个答案:

没有答案