我想设置一个入口控制器(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
运行我的回声客户端。 不过,我得到一个连接被拒绝错误,当我做到这一点。 难道我做错了什么?