Web services 在k8s中调试gRPC服务?

Web services 在k8s中调试gRPC服务?,web-services,kubernetes,grpc,Web Services,Kubernetes,Grpc,我在库伯内特斯建立了一个服务。但是,我无法通过TCP访问它。接下来的调试步骤是什么 我已经检查了服务日志,流程已经启动 我已经检查了服务端点--它正确地找到了pod 我在服务舱中执行了bash,但是,我发现服务中的Internet连接速度很慢(我检查了节点IO,这不是有史以来最高的)。我的计划是安装telnet并检查是否可以手动连接到服务gRPC服务器 我尝试将“0.0.0.0/50051”和“[::]:50051”作为服务器地址/端口,但结果相同——无法工作 我尝试了使用本地主机和服务进行端

我在库伯内特斯建立了一个服务。但是,我无法通过TCP访问它。接下来的调试步骤是什么

  • 我已经检查了服务日志,流程已经启动
  • 我已经检查了服务端点--它正确地找到了pod
  • 我在服务舱中执行了bash,但是,我发现服务中的Internet连接速度很慢(我检查了节点IO,这不是有史以来最高的)。我的计划是安装telnet并检查是否可以手动连接到服务gRPC服务器
  • 我尝试将“0.0.0.0/50051”和“[::]:50051”作为服务器地址/端口,但结果相同——无法工作
  • 我尝试了使用本地主机和服务进行端口转发,但在通过端口转发进行连接时,它不起作用
  • 当然,在部署到云中之前,该服务需要在本地进行测试。它按预期工作
  • Kubernetes通过其提供的引擎安装在google云平台上
对于kubernetes yaml,我已经为TCP服务进行了设置,并为另一个公开JSON REST api服务器的服务进行了复制/粘贴/修改。在调试过程中,我可以采取哪些后续步骤

编辑1:

这是我的kubernetes头盔配置。我正试图在集群内到达它。当我试图到达集群外部时,我使用的是
kubectl port forward 50051 50051
实用程序

编辑2:

我尝试启动普通flask web服务器,它使用特定的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和我的本地主机中尝试了相同的脚本

使用10.132.0.25:31158(节点端口): 在我的本地主机上,它通常连接到gRPC服务器。 在k8s内部,它不工作

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

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

更新2:


对于gRPC更好的调试日志

您是否尝试从集群外部连接到您的服务?如果是,您需要公开它:。我不确定当您说“我尝试放置诸如服务器地址/端口之类的东西时,您到底做了什么?(修改配置?将这些参数提供给了
tellnet
?)这是我的kubernetes helm配置。我试图在集群内访问它。当我试图在集群外访问它时,我使用的是kubectl port forward实用程序。我不确定
类型:NodePort
。我不知道它做什么(我的配置中没有它)。我通常在
端口
配置中指定
协议
,但我不确定这是否重要。您使用了什么语言指定
服务器。添加不安全的\u端口()…
?(另外,它似乎只需要端口,并且会自动绑定0.0.0?)如果您将
exec
放入容器中,是否可以在那里运行
netstat-tpln
或类似程序,以查看正在使用的端口?如果您试图从同一个pod中的容器中通过名称访问服务,则可能尝试找出服务的主机名并绑定到该名称,而不是0.0.0.0?(续)(这是Kubernetes中的一个bug)。但是您应该能够在
localhost
上访问它。哦,我看您已经解决了:)