Kubernetes外部连接



我正试图在集群中设置一个简单的敲门服务器,目前它在内部工作,但我无法让它从远程连接进行连接。作为参考,这是我试图用于测试目的的服务器。https://docs.oracle.com/javase/tutorial/networking/sockets/clientServer.html

目前我正在使用NGINX入口控制器。

NAME              TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
knock-server      ClusterIP      10.104.42.238    <none>        9000/TCP         25m

testing@host:~$ java KnockKnockClient 10.104.42.238 9000
Server: Knock! Knock!

我有其他Ingress的完美工作,但这些是用于网站相关的部署,而不是像这样的内部服务器。我试过两种不同的Ingress,但都不管用。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: knockknock-ingress
spec:
rules:
- host: domain.com
http:
paths:
- backend:
serviceName: knock-server
servicePort: 9000

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: knock-ingress
spec:
backend:
serviceName: knock-server
servicePort: 9000

我不确定我在这件事上做错了什么,我们非常感谢您的帮助。

您可以使用ingress控制器来公开tcp服务。

  1. 更改入口控制器以包含以下参数:
--tcp-services-configmap tcp-configmap-example

ConfigMap的名称,包含要公开的TCP服务的定义。映射中的键指示要使用的外部端口。该值是对"namespace/name:port"形式的服务的引用,其中"port"可以是端口号或名称。TCP端口80和443由控制器保留用于服务HTTP流量。

  1. 为tcp服务创建配置映射:
apiVersion: v1
kind: ConfigMap
metadata:
name: tcp-configmap-example
data:
9000: "default/knock-server:9000"