[英]How to connect to the gRPC service inside k8s cluster from outside gRPC client
[英]Deploy Rest + gRPC server deploy to k8s with ingress
我使用了一个示例 gRPC HelloWorld 应用程序https://github.com/grpc/grpc-go/tree/master/examples/helloworld 。 这个例子在本地系统中运行顺利。
我想使用 Ingress 将它部署到 kubernetes。
下面是我的配置文件。
service.yaml - 作为 NodePort
apiVersion: v1
kind: Service
metadata:
name: grpc-scratch
labels:
run: grpc-scratch
annotations:
service.alpha.kubernetes.io/app-protocols: '{"grpc":"HTTP2"}'
spec:
type: NodePort
ports:
- name: grpc
port: 50051
protocol: TCP
targetPort: 50051
selector:
run: example-grpc
入口.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: grpc-ingress
annotations:
nginx.org/grpc-services: "grpc"
kubernetes.io/ingress.class: "nginx"
kubernetes.io/tls-acme: true
spec:
tls:
- hosts:
- xyz.com
secretName: grpc-secret
rules:
- host: xyz.com
http:
paths:
- path: /grpc
backend:
serviceName: grpc
servicePort: 50051
我无法使用 url xyz.com/grpc
向服务器发出 gRPC 请求。 得到错误
{
"error": "14 UNAVAILABLE: Name resolution failure"
}
如果我向xyz.com
提出请求,则错误是
{
"error": "14 UNAVAILABLE: Trying to connect an http1.x server"
}
任何帮助,将不胜感激。
入口对象的后端是服务和端口名称的组合
在您的情况下,您将serviceName: grpc
作为后端,而您的服务的实际名称是name: grpc-scratch
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: grpc-ingress
annotations:
nginx.org/grpc-services: "grpc"
kubernetes.io/ingress.class: "nginx"
kubernetes.io/tls-acme: true
spec:
tls:
- hosts:
- xyz.com
secretName: grpc-secret
rules:
- host: xyz.com
http:
paths:
- path: /grpc
backend:
serviceName: grpc-scratch
servicePort: grpc
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.