首页 > 解决方案 > 端口转发工作正常,但无法从同一 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

标签: kubernetesgoogle-kubernetes-engine

解决方案


执行到 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


推荐阅读