ingress不适用于GRPC网关.HTTP请求没有按照入口的预期转发到GRPC网关



我已经建立了一个GRPC网关,所有方法都对应于HTTP URL。例如CCD_ 1。这些路径似乎不适用于我设置的入口。我可以使用另一个pod间接发送请求,使用内部集群IP将请求路由到此URL,但当我尝试直接访问我的IP/v1/myservice时,我会收到一个几乎没有描述的服务器错误:

Error: Server Error</h1>
<h2>The server encountered a temporary error and could not complete your request.<p>Please try again in 30 seconds.

发生这种情况有原因吗?当我知道传入的URL格式与网关中定义的方法相对应时,我不明白为什么会以这种方式出现服务器错误。我想指出的是,我的入口确实有效,因为我只是使用这个中间pod来路由成功的请求,但我仍然通过入口发送它们。

可能,您需要Ingress资源上的注释(?(:

nginx.ingress.kubernetes.io/backend-protocol: "GRPC"

和HTTP/2入口控制器ConfigMap选项(?(:

use-http2="true"

此外,检查Nginx入口控制器吊舱中的nginx.conf

kubectl exec -it <nginx-ingress-pod> sh
# cat nginx.conf

您需要检查是否在服务器级别配置了类似的东西:

server {
listen 80 http2;

access_log logs/access.log main;

location / {
# Replace localhost:50051 with the address and port of your gRPC server
# The 'grpc://' prefix is optional; unencrypted gRPC is the default
grpc_pass grpc://localhost:50051;
}
}

最新更新