微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

连接到 Kubernetes 的桥接不与 Grpc 服务一起工作

如何解决连接到 Kubernetes 的桥接不与 Grpc 服务一起工作

Bridge to Kubernetes 是否适用于 Grpc 服务?
我在 Kubernetes 中有一个与 grpc 服务通信的 Http 网关。
我能够通过 Bridge to Kubernetes 在本地运行网关项目,并接收发送到 Kubernetes 集群中网关服务的 http 请求。
通过 Bridge to Kubernetes 在本地运行 Grpc 服务时,通过网关服务发送到 Kubernetes 集群中的 grpc 服务的 grpc 请求不会转发到我本地的开发机器。

在 Kubernetes 集群上,查看转发 pod(通过桥接到 kubernetes 替换我真正的 grpc 服务 pod 的那个)日志,我可以看到它在正确的端口(5005)上转发:

2021-03-10T10:54:49.5165135Z | RemoteAgent | TRACE | ReversePortForwardConnector created for port 5005\noperation context: <json>{"clientRequestId":"ff87d8a3-50cf-40e9-ade6-999cf0134a17","correlationId":"a25c866e-cc5c-4a69-82e4-e144d9411f38:f66d8e62cc62:5a4a2f5120d5","requestId":null,"userSubscriptionId":null,"startTime":"2021-03-10T10:54:43.9384338Z","userAgent":"RemoteAgent/1.0.20210126.4","requestHttpMethod":null,"requestUri":null,"version":"1.0.20210126.4","requestHeaders":{},"loggingProperties":{"applicationName":"RemoteAgent","deviceOperatingSystem":"Linux 5.4.0-65-generic #73-Ubuntu SMP Mon Jan 18 17:25:17 UTC 2021","framework":".NET Core 3.1.11","processId":1,"targetEnvironment":"Production"}}</json>

2021-03-10T10:54:49.5306948Z | RemoteAgent | TRACE | ReversePortForwardConnector start listening on port 5005

向网关发送请求时,我可以看到转发器 Pod 收到来自网关的请求,但没有将其转发到我的本地开发机器:

2021-03-10T10:59:51.7216091Z | RemoteAgent | TRACE | AgentHub received for 5005,id 3,size 491

2021-03-10T10:59:53.7781637Z | RemoteAgent | TRACE | AgentHub disconnect for 5005,id 3\noperation context: <json>{"clientRequestId":"ff87d8a3-50cf-40e9-ade6-999cf0134a17","targetEnvironment":"Production"}}</json>

2021-03-10T10:59:53.7791763Z | RemoteAgent | TRACE | PortForwardConnector.disconnect 3

2021-03-10T10:59:53.7797928Z | RemoteAgent | TRACE | AgentHub closed for 5005,id 3

2021-03-10T10:59:53.7807672Z | RemoteAgent | TRACE | ReversePortForwardConnector.StartReceiveDataAsync exception 'Unable to read data from the transport connection: Operation canceled.' when invoking handler. Close.

在网关端,我看到以下日志:

2021-03-10T11:05:58.056425797Z info: System.Net.Http.HttpClient.RedisLockGrpcServiceClient.LogicalHandler[100]
2021-03-10T11:05:58.056437689Z       Start processing HTTP request POST http://my.service.name.qa.svc.cluster.local:5005/RedisLockGrpcService.RedisLockGrpcService/AcquireLock

2021-03-10T11:05:58.056506665Z info: System.Net.Http.HttpClient.RedisLockGrpcServiceClient.ClientHandler[100]
2021-03-10T11:05:58.056513072Z       Sending HTTP request POST http://my.service.name.qa.svc.cluster.local:5005/RedisLockGrpcService.RedisLockGrpcService/AcquireLock

2021-03-10T11:06:00.122757112Z fail: Grpc.Net.Client.Internal.GrpcCall[6]
2021-03-10T11:06:00.122767931Z       Error starting gRPC call.
2021-03-10T11:06:00.122771595Z System.Net.Http.HttpRequestException: An error occurred while sending the request.
2021-03-10T11:06:00.122774131Z  ---> System.IO.IOException: The request was aborted.
2021-03-10T11:06:00.122776838Z  ---> System.IO.IOException: The response ended prematurely,with at least 9 additional bytes expected.
2021-03-10T11:06:00.122778929Z    at System.Net.Http.Http2Connection.ReadAtLeastAsync(Stream stream,Memory`1 buffer,Int32 minReadBytes)
2021-03-10T11:06:00.122781228Z    at System.Net.Http.Http2Connection.EnsureIncomingBytesAsync(Int32 minReadBytes)
2021-03-10T11:06:00.122797606Z    at System.Net.Http.Http2Connection.ReadFrameAsync(Boolean initialFrame)
2021-03-10T11:06:00.122800082Z    at System.Net.Http.Http2Connection.ProcessIncomingFramesAsync()
2021-03-10T11:06:00.122801790Z    --- End of inner exception stack trace ---
2021-03-10T11:06:00.122803975Z    at System.Net.Http.Http2Connection.Http2Stream.CheckResponseBodyState()
2021-03-10T11:06:00.122805517Z    at System.Net.Http.Http2Connection.Http2Stream.TryEnsureHeaders()
2021-03-10T11:06:00.122807080Z    at System.Net.Http.Http2Connection.Http2Stream.ReadResponseHeadersAsync(CancellationToken cancellationToken)
2021-03-10T11:06:00.122808600Z    at System.Net.Http.Http2Connection.SendAsync(HttpRequestMessage request,CancellationToken cancellationToken)
2021-03-10T11:06:00.122810131Z    --- End of inner exception stack trace ---
2021-03-10T11:06:00.122811641Z    at System.Net.Http.Http2Connection.SendAsync(HttpRequestMessage request,CancellationToken cancellationToken)
2021-03-10T11:06:00.122813161Z    at System.Net.Http.httpconnectionPool.SendWithRetryAsync(HttpRequestMessage request,Boolean doRequestAuth,CancellationToken cancellationToken)
2021-03-10T11:06:00.122815615Z    at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request,CancellationToken cancellationToken)
2021-03-10T11:06:00.122817242Z    at System.Net.Http.DiagnosticsHandler.SendAsync(HttpRequestMessage request,CancellationToken cancellationToken)
2021-03-10T11:06:00.122818859Z    at Microsoft.Extensions.Http.Logging.LoggingHttpMessageHandler.SendAsync(HttpRequestMessage request,CancellationToken cancellationToken)
2021-03-10T11:06:00.122820416Z    at Microsoft.Extensions.Http.Logging.LoggingScopeHttpMessageHandler.SendAsync(HttpRequestMessage request,CancellationToken cancellationToken)
2021-03-10T11:06:00.122838745Z    at System.Net.Http.HttpClient.FinishSendAsyncUnbuffered(Task`1 sendTask,HttpRequestMessage request,CancellationTokenSource cts,Boolean disposeCts)
2021-03-10T11:06:00.122844461Z    at Grpc.Net.Client.Internal.GrpcCall`2.GetResponseHeaderscoreAsync()

2021-03-10T11:06:00.123445505Z info: Grpc.Net.Client.Internal.GrpcCall[3]
2021-03-10T11:06:00.123451724Z       Call Failed with gRPC error status. Status code: 'Internal',Message: 'Error starting gRPC call. HttpRequestException: An error occurred while sending the request. IOException: The request was aborted. IOException: The response ended prematurely,with at least 9 additional bytes expected.'.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。