如何将 TCP 流量从外部路由到 Kubernetes 集群内的服务?

How to route TCP traffic from outside to a Service inside a Kubernetes cluster?

我在 Azure (AKS) 上有一个集群。我有一个 orientdb 服务

apiVersion: v1
kind: Service
metadata:
  name: orientdb
  labels:
    app: orientdb
    role: backend
spec:
  selector:
    app: orientdb
  ports:
  - protocol: TCP
    port: 2424
    name: binary
  - protocol: TCP
    port: 2480
    name: http

我想将其暴露给外部,以便来自 Internet 的应用程序可以将 TCP 流量直接发送到此服务。

(为了连接到 orientdb,您需要通过 TCP 连接到端口 2424)

我不擅长网络,所以这是我的理解,这也可能是错误的。 我尝试了以下方法:

  1. 设置 Ingress
    • 没有用,因为入口处理 http,但不太适合 tcp。
  2. 我尝试在 NodePort 定义的服务配置中设置 ExternalIP 字段
    • 没用。

所以我的问题如下:
我无法向服务发送 tcp 流量。 Http 流量正常。

如果有人能告诉我如何公开我的服务以便我可以将 TCP 流量直接发送到我的定向服务,我将不胜感激。

提前致谢。

您可以同时使用 Loadbalancer 类型的服务(我假设 AKS 支持),或者您可以只使用节点端口。

kubectl expose deployment hello-world --type=LoadBalancer --name=my-service

kubectl get services my-service

输出类似于:

NAME         TYPE        CLUSTER-IP     EXTERNAL-IP      PORT(S)    AGE
my-service   ClusterIP   10.3.245.137   104.198.205.71   8080/TCP   54s

引用here

kubectl 暴露用法:

Usage
$ expose (-f FILENAME | TYPE NAME) [--port=port] [--protocol=TCP|UDP|SCTP] [--target-port=number-or-name] [--name=name] [--external-ip=external-ip-of-service] [--type=type]

您可以在上面的 kubectl expose 命令中为正确的端口使用 --port= 2424 --target-port= 2424 选项