入口控制器路由TCP流量(Ingress controller to route TCP traff

2019-10-28 15:25发布

我想设置一个入口控制器(Nginx的)一些TCP流量转发到kubernetes服务(GCP)。 有本教程说明了如何使用nginx的路线HTTP通信服务(基于路径)。 我想有一个类似的设置来转发TCP流量。

在我的群,我有一个吊舱运行写在使用python套接字TCP回声服务器。 有连接到吊舱的服务。 如果我将此服务设置为负载平衡器的服务类型,我可以按如下所示运行我的客户,并从集群的回声。

python client.py --host <EXTERNAL-IP-OF-LOAD-BALANCER> --port <PORT>

回声服务器相似,我还有其他的TCP服务在我的群集充当其他吊舱。 目前,我有所有的人设置为负载均衡器。 因此,他们有外部的IP地址,并监听在不同的端口流量。 不过,我不希望创建负载均衡器到所有这些服务。 我将如何使用nginx的路由的TCP流量基础上的端口号不同的服务。 如果nginx的不能做到这一点,是我可以用它来实现这个还有其他的选择吗?


更新:继航渡的答案我创建下列文件。

apiVersion: v1
kind: ConfigMap
metadata:
  name: tcp-services
  namespace: default
data:
  9000: "default/echo-service:50000"

apiVersion: v1
kind: Service
metadata:
  name: ingress-nginx
  namespace: default
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
spec:
  type: LoadBalancer
  ports:
    - name: http
      port: 80
      targetPort: 80
      protocol: TCP
    - name: https
      port: 443
      targetPort: 443
      protocol: TCP
    - name: proxied-tcp-9000
      port: 9000
      targetPort: 9000
      protocol: TCP
  selector:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx

然后我用kubectl create -f <FILE_NAME>创建的配置图和服务。 所以,我希望我可以使用新创建的服务和端口9000和运行的外部IP python client.py --host <EXTERNAL-IP-OF-LOAD-BALANCER> --port 9000运行我的回声客户端。 不过,我得到一个连接被拒绝错误,当我做到这一点。 难道我做错了什么?

Answer 1:

我回答了另一个线程类似的问题。 如何使用不同的命名空间nginx的进入TCP服务

基本上,你可以指定在configmap您服务端口和后端。

以下是链接到文档中。 https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/exposing-tcp-udp-services.md



文章来源: Ingress controller to route TCP traffic