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

h5qlskok  于 2023-05-16  发布在  Kubernetes
关注(0)|答案(1)|浏览(91)

我在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流量。
(In为了连接到orientdb,您需要通过TCP连接到端口2424)
我不擅长网络,所以这是我的理解,这也可能是错误的。我尝试了以下方法:

  • 设置入口
  • 不起作用,因为ingress处理http,但不太适合tcp。
  • 我尝试在NodePort定义中的服务配置中设置ExternalIP字段
  • 不起作用

所以我的问题是:

**无法向服务发送tcp流量。**Http流量正常。

如果有人能告诉我如何公开我的服务,这样我就可以直接向我的面向服务发送TCP流量,我将非常感激。
先谢谢你了。

ebdffaop

ebdffaop1#

您可以同时使用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 expose用法:

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选项来获取正确的端口

相关问题