首页 > 解决方案 > 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 可以完美运行,但它们是用于网站相关部署的,而不是用于像这样的内部服务器。我尝试了 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

我不确定我在这个问题上做错了什么,感谢任何和所有帮助。

标签: kuberneteskubernetes-ingress

解决方案


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

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

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

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

推荐阅读