如何在Kubernetes中外部访问服务TCP / UDP端口?

时间:2018-06-04 23:57:01

标签: kubernetes

我有很多租户在一个Kubernetes集群上运行(在AWS上),每个租户都有一个Pod,暴露一个 TCP 端口(不是HTTP ),一个 UDP 端口。

  • 我不需要负载均衡功能。
  • 该方法应公开外部可用的IP地址,并为每个租户提供专用端口
  • 我不想将节点直接暴露给互联网

到目前为止,我有以下服务:

apiVersion: v1
kind: Service
metadata:
  name: my-service
  labels:
    app: my-app
spec:
  type: NodePort
  ports:
    - port: 8111
      targetPort: 8111
      protocol: UDP
      name: my-udp
    - port: 8222
      targetPort: 8222
      protocol: TCP
      name: my-tcp
  selector:
    app: my-app

要走的路是什么?

2 个答案:

答案 0 :(得分:0)

  • Deploy您的AWS集群上的NGINX入口控制器
  • 将您的服务我的服务类型从NodePort更改为ClusterIP
  • tcp-services命名空间中编辑configMap ingress-nginx,添加:
data:
  "8222": your-namespace/my-service:8222
  • 与configMap udp-services相同:
data:
  "8111": your-namespace/my-service:8111

现在,您可以使用Nginx控制器IP <ip:8222>(TCP)和<ip:8111>(UDP)从外部访问应用程序

答案 1 :(得分:-1)

@ffledgling提供的description就是您所需要的。

但我必须提一下,如果要暴露端口,则必须使用负载均衡器或将节点暴露给Internet。例如,您可以将节点公开给Internet,并且只允许访问某些必要的端口。