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

标签 tcp kubernetes orientdb azure-aks

我在 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

我想将其公开给外部,以便来自互联网的应用程序可以直接向该服务发送 TCP 流量。

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

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

  1. 设置 Ingress
    • 不起作用,因为 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 hide 命令中使用 --port= 2424 --target-port= 2424 选项来获取正确的端口

关于tcp - 如何将 TCP 流量从外部路由到 Kubernetes 集群内的服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52931514/

相关文章:

tcp - Java 套接字何时发送 ack?

c# - 启动从公共(public) IP 到另一个网络上的私有(private)机器的 tcp 连接

https - 在 GKE 上为入口 Controller IP 地址配置 FQDN

kubernetes - 多节点集群的网络策略行为

distributed - OrientDB 嵌入式和分布式

c - C 中的 TCP/IP 编程

Kubernetes Ingress 服务无法加载静态文件

javascript - OrientDB No database instance found in context 错误?

java - 在同一虚拟机内切换 WAL 使用?

python - 如何在没有 sudo 的情况下发送自定义 'TCP' 数据包 - 没有三向握手