Kubernetes外部连接

时间:2018-07-16 19:00:13

标签: kubernetes kubernetes-ingress

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

当前我正在使用NGINX Ingress Controller。

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可以很好地工作,但是它们是用于网站相关的部署,而不是用于这样的内部服务器。我尝试了2种不同的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

我不确定我在这方面做错了什么,我们将提供所有帮助。

1 个答案:

答案 0 :(得分:1)

您可以使用入口控制器公开tcp服务。

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

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

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