簡體   English   中英

Kubernetes 中的 GRPC 服務正在工作,但是當我們使用 istio 時失敗並出現 GRPC 協議錯誤

[英]GRPC service inside Kubernetes is working but fails with an GRPC protocol error when we use istio

我有一個服務器到服務器調用,我使用 GRPC(使用 .net 核心 5)它在本地工作和測試。

之后,我將所有服務移至 Kubernetes Pod(Docker 桌面)並通過流程進行了測試(使用 swagger 后調用),它也在那里工作。

現在為了監控,我添加了 ISTIO 並將 label 添加到我的命名空間“ 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 調用)。

我在https://istiobyexample.dev/grpc/找到了一個解決方案,它描述了丟失的項目。

istio 建議使用名稱和版本標記為 Label,但更重要的是,在使用 GRPC 時,暴露 GRPC 的服務需要具有端口名稱 GRPC。

我添加了重新啟動服務並開始按預期工作。 同樣,這不是我解決的問題。 所有功勞都歸功於鏈接https://istiobyexample.dev/grpc/和下面發布的圖片。

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM