我在 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)
我不擅长网络,所以这是我的理解,这也可能是错误的。 我尝试了以下方法:
- 设置 Ingress
- 不起作用,因为 ingress 处理 http,但不太适合 tcp。
- 我尝试在 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/