【发布时间】:2020-09-26 19:59:44
【问题描述】:
有没有办法让我设置 >1 个 Pod,每个 Pod 都在其 TargetPort 上侦听,为在指定 NodePort(例如 30000)上服务的所有 Pod 提供一个服务,并连接到同一 Pod 的两个端点节点端口?
我正在 docker-desktop 上使用 2 个提供数据的 pod 进行测试。我可以连接到 localholdt:30000 上的第一个 pod(服务上的 NodePort 为 30000),但是当我尝试连接第二个客户端时,它挂起。我以为 Service 会自动将第二个客户端连接到第二个 pod 的端点,但事实并非如此。
我的服务describe 是:
Name: replica1-gsewz
Namespace: default
Labels: app=cnpquery
app.group.com/partitionreplica=replica1
app.group.com/serviceMetatag=podselector1
Annotations: <none>
Selector: app.group.com/serviceMetatag=podselector1
Type: NodePort
IP: 10.98.212.171
LoadBalancer Ingress: localhost
Port: http 5000/TCP
TargetPort: 5000/TCP
NodePort: http 30000/TCP
Endpoints: 10.1.0.92:5000,10.1.0.93:5000
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
编辑:
设置如下:
- pod 上部署了服务器应用程序。服务器应用侦听 pod 的 5000 端口。
- 服务 afaik 将节点端口 30000 上的所有请求转发到 pod 端口 5000
- 我在 docker 桌面上,所以我使用 docker 的代理连接到我本地机器上的 30000 端口,即 http://localhost:30000
- 在我的本地计算机上,我有一台客户端计算机,它向端口 30000 发送内容,并从 pod 的服务器获取响应。
- 此设置适用于单个 pod(即我可以在节点:30000--5000:端口连接上发送和接收消息
- 但是当我启动第二个 pod 并尝试在 localhost:30000 上连接到它时,它挂起
【问题讨论】:
-
是的,通常它应该使用NodePort svc 工作。但是,您的意思是:
I can connect to the first pod ... when I try to connect a second client, it hangs] Please provide more informationwith commands` 您要做什么。您如何尝试连接到不同的 pod?这些 pod 是否由同一个部署管理?或者您正在尝试使用相同的服务启动两个不同的 pod?你是如何为 svc 类型的 NodePort 设置LoadBalancer Ingress: localhost的。应用yaml文件会很好 -
@Hanx 添加编辑
标签: kubernetes kubernetes-ingress