kubernetes - 端口转发工作正常,但无法从同一 GKE 集群中的其他 POD 访问端口
问题描述
我有一个用于 MQ 的有状态集,为 TCP 公开了两个端口 1414,为 HTTPS 公开了 9443,并创建了 Loadbalancer 类型的服务。TCP 的 1414 工作正常,能够使用服务名称/集群 IP 从同一集群中的其他 POD 远程登录 ..也能够从 GKE 集群外部连接 1414。
但问题是无法从集群中的其他 POD(服务名称/集群 IP)或集群外部(外部 IP)访问端口 9443。执行到 POD 并在本地测试时,telnet 工作正常.. telnet 127.0.01 9443
HTTPS服务是否缺少任何配置..
注意:端口转发工作正常并且能够连接到 API。kubectl 端口转发 svc/mq-qmdtest 9443:9443
服务定义
apiVersion: v1
kind: Service
metadata:
name: {{.Values.name}}
namespace: {{.Values.namespace}}
annotations:
cloud.google.com/load-balancer-type: "Internal"
labels :
run: {{.Values.name}}
spec:
type: LoadBalancer
loadBalancerIP: {{.Values.loadBalancerIP}}
ports:
- name: webui
port: 9443
protocol: TCP
- name: mq
port: 1414
protocol: TCP
selector:
run: {{.Values.name}}
Stateful Set - 容器端口配置
ports:
- containerPort: 9443
protocol: TCP
name: webui
- containerPort: 1414
protocol: TCP
name: mq
解决方案
执行到 POD 并在本地进行测试时,telnet 工作正常.. telnet 127.0.01 9443 ... 端口转发工作正常并且能够连接到 API。kubectl 端口转发 svc/mq-qmdtest 9443:9443
几乎可以肯定是 pod 只在 localhost 上监听造成的;port-forward
还与 localhost 交互,因此您无法从集群中的其他 pod 访问它,但您可以从它自己访问它,并且您可以从端口转发访问它,这意味着该服务仅侦听本地连接。
在不了解该软件的情况下,我无法为您提供“打开此文件,更改此值”类型的说明,但请注意“绑定主机”或任何可以接受主机和端口的“侦听”配置,在这种情况下,将“绑定主机”设置为0.0.0.0
或“侦听”配置为0.0.0.0:9443
推荐阅读
- node.js - Mongoose 如何更新嵌套模型?
- asp.net-mvc - Web api在不同的环境下会有不同的响应
- c# - 编译器在 app.config 中找不到属性
- arrays - VBA拆分数组,带分隔符,不带循环
- python - 使用 Pygame 的 Python 角色移动
- sql-server - 如何在 SQL Server 中获得预期的输出
- tensorflow - Tensorflow - tf.variable_scope,GAN 的重用参数
- java - 动态投射对象
- python - Matplotlib:极坐标投影 transData.transform 给出错误值
- python - 在 kivy 中的类(屏幕)之间传递值