如何配置Kubernetes接收TCP连接

时间:2019-12-06 04:44:46

标签: kubernetes kubernetes-ingress azure-kubernetes

我正在Azure的AKS中运行一个非常基本的群集。
我需要在端口6879上公开TCP服务器。
我已将TCP端口添加到Loadbalancer规范中:

kind: Service
metadata:
  name: ingress-nginx
  selfLink: /api/v1/namespaces/ingress-nginx/services/ingress-nginx
spec:
  externalTrafficPolicy: Local
  healthCheckNodePort: 32557
  ports:
  - name: http
    nodePort: 30731
    port: 80
    protocol: TCP
    targetPort: http
  - name: https
    nodePort: 31187
    port: 443
    protocol: TCP
    targetPort: https
  - name: tcp
    nodePort: 31197
    port: 6879
    protocol: TCP
    targetPort: 6879
  selector:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
  sessionAffinity: None
  type: LoadBalancer

此配置是否会在公用IP上公开端口6879或31197?
我在想我需要向Ingress添加一条规则,以将该流量路由到TCP服务器主机。但是我的阅读表明,Kubernetes Ingress不支持路由TCP通信。我缺少文档的哪一部分?

1 个答案:

答案 0 :(得分:2)

nginx入口上的TCP \ UDP is supported

apiVersion: v1
kind: ConfigMap
metadata:
  name: tcp-services
  namespace: ingress-nginx
data:
  6879: "default/example-go:8080"
  31197: "namespace/service:port"

上面的示例显示了如何使用端口9000(在链接的文章中复制粘贴)来公开运行在端口8080中默认名称空间中运行的服务示例。