我有一个服务器到服务器的调用,我使用 GRPC(带有 .net core 5)它在本地工作和测试。
之后,我将所有服务移至 Kubernetes Pod(Docker 桌面),并通过流程进行了测试(使用 swagger post-call),它也在那里工作。
现在为了监控,我添加了 ISTIO 并将标签添加到我的命名空间“ istio-injection=enabled ”重新启动了我所有的 Pod,现在每个 Pod 内都有 2 个容器。
我测试了基本服务(再次大摇大摆)并且它正在工作。在测试 GRPC 调用时。呼叫方说呼叫失败
Grpc.Core.RpcException: Status(StatusCode="Unavailable", Detail="upstream connect error or disconnect/reset before headers.reset reason: protocol error")
我检查了 GRPC 服务器端的日志,它对这个调用一无所知,并且服务正在运行。然后我有点认为错误来自调用方,而它无法或无法调用 GRPC 服务器。
错误详情:
Grpc.Core.RpcException: Status(StatusCode="Unavailable", Detail="upstream connect error or disconnect/reset before headers. reset reason: protocol error")
at Basket.API.GrpcServices.DiscountGrpcService.GetDiscount(String productName) in /src/Services/Basket/Basket.API/GrpcServices/DiscountGrpcService.cs:line 21
at Basket.API.Controllers.BasketController.UpdateBasket(ShoppingCart basket) in /src/Services/Basket/Basket.API/Controllers/BasketController.cs:line 47 at lambda_method7(Closure , Object )
at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Obje
再次,我删除了 Istio 并进行了测试,它再次开始工作(没有改变任何东西)我添加了 istio 并且它再次开始失败。所有其他服务都在使用 istio 但不是这个调用(这只是我有的 GRPC 调用)。