gpt4 book ai didi

不指定端口即可进行 gRPC 路由

转载 作者:行者123 更新时间:2023-12-02 07:33:19 24 4
gpt4 key购买 nike

gRPC 新手:

有了 gRPC 客户端,如何使用路由?

我的 gRPC 服务器位于此本地路径 10.0.1.6/hw

它正在 Kubernetes Pod 中运行和监听,并且如果我在 Pod 中运行它,它就会在内部工作。但我现在通过 url 和 ingress 访问它。

但是如何测试它是否确实在没有端口号的情况下与路由一起工作?

const (
address = "10.0.1.6:80/hw"
defaultName = "World"
)

var (
conn *grpc.ClientConn
c pb.GreeterClient
)

func setupRPC() {

var err error
conn, err = grpc.Dial(address, grpc.WithInsecure())
c = pb.NewGreeterClient(conn)
if err != nil {
log.Fatalf("did not connect: %v", err)
}

}

我收到此错误:

could not greet: rpc error: code = Unavailable desc = all SubConns are in TransientFailure, latest connection error: connection error: desc = "transport: Error while dialing dial tcp: lookup tcp/80/hw: nodename nor servname provided, or not known"

你知道怎么做吗?或者如何测试 gRPC 端点?

最佳答案

如果它在 Pod 内部工作,那么您只需公开它。您可以通过为服务添加 yaml 定义来完成此操作。就像下面这样。

apiVersion: v1
kind: Service
metadata:
namespace: $YOUR_NAMESPCAE
labels:
app: $YOUR_SERVICE_NAME
name: $YOUR_SERVICE_NAME
spec:
ports:
- name: $YOUR_GRCP_PORT
port: $YOUR_GRCP_PORT
targetPort: $YOUR_GRCP_PORT
selector:
app: $YOUR_SERVICE_NAME
status:
loadBalancer: {}

请注意,在显示 $YOUR_GRCP_PORT 的地方,您定义了要公开的 grcp 端口。

现在您只需要编辑您提到的入口即可。它应该类似于以下内容。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: vizix-ingress
namespace: preprod-vizix-io
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: "/"
spec:
rules:
- http:
paths:
- path: /
backend:
serviceName: $YOUR_SERVICE_NAME
servicePort: $YOUR_GRCP_PORT

关于不指定端口即可进行 gRPC 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50005666/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com