kubernetes(kubectl)端口转发不在mac上进行IBM MQ / Docker部署

问题描述 投票:1回答:1

我正在尝试使用docker hub存储库上托管的映像将IBM MQ部署到我的本地MAC机器上。我正在使用具有Kubernetes支持的docker edge版本。

我能够使用kubernetes成功部署映像,并使队列管理器在容器内运行良好。我也可以ssh到容器中并确保所有MQ进程按预期运行。

但是当我使用以下kubectl命令使用端口转发时,它会打开端口,但不允许我使用“IP或主机名”(即使是从本地计算机)telnet到它。但是当我使用“localhost”来telnet它工作正常。

在进行故障排除时,我使用docker命令而不是kubernetes部署了相同的映像,并且使用docker部署,端口转发按预期工作。它允许我使用IP,主机名和localhost进行telnet。

所以,肯定是Kubernetes端口转发的一些问题。有人可以告诉我,如果我在这里遗漏了什么吗?如果我需要一些额外的信息,请告诉我。

我是kubernetes和docker的新手,但对IBM MQ非常熟悉。

正在使用的命令:

要使用kubectl创建端口转发规则,请检查netstat并使用telnet连接:


HOSTNAME:Test2 an0s5v4$ sudo kubectl port-forward private-reg 1414:1414 &

[1] 3001


HOSTNAME:Test2 an0s5v4$ Forwarding from 127.0.0.1:1414 -> 1414
Forwarding from [::1]:1414 -> 1414

HOSTNAME:Test2 an0s5v4$ netstat -an |grep 1414
tcp6       0      0  ::1.1414               *.*                    LISTEN     
tcp4       0      0  127.0.0.1.1414         *.*                    LISTEN  

HOSTNAME:Test2 an0s5v4$ ps -ef|grep 1414
    0  3001   920   0 10:27AM ttys006    0:00.03 sudo kubectl port-forward private-reg 1414:1414

    0  3002  3001   0 10:27AM ttys006    0:00.18 kubectl port-forward private-reg 1414:1414
  502  3007   920   0 10:28AM ttys006    0:00.00 grep 1414

HOSTNAME:Test2 an0s5v4$ telnet IP 1414

Trying IP...

telnet: Unable to connect to remote host: Connection refused

HOSTNAME:Test2 an0s5v4$ telnet localhost 1414

Trying ::1...

Connected to localhost.

Escape character is '^]'.

Handling connection for 1414

L-RCC9048942:Test2 an0s5v4$ telnet HOSTNAME 1414

Trying IP ...

telnet: Unable to connect to remote host: Connection refused

HOSTNAME:Test2 an0s5v4$ nslookup HOSTNAME

;; Truncated, retrying in TCP mode.

Name:   HOSTNAME
Address: IP

Kubernetes pod YAML文件内容

apiVersion: v1

kind: Pod

metadata: 

  name: private-reg

  labels:

     app: ibmmq

spec: 

  containers: 

    - 

      env: 

        - 

          name: LICENSE

          value: accept

        - 

          name: MQ_QMGR_NAME

          value: QM4

      image: "image path in docker hub"

      name: private-reg-container

      ports: 

        - 

          containerPort: 1414

          hostPort: 1414

编辑:添加K8S服务到帖子

Kubernetes提供YAML文件内容

apiVersion: v1
kind: Service
metadata:
  name: myservice-nodeport
  labels:
    app: ibmmq
spec:
  ports:
  - port: 3000 
    targetPort: 1414
    nodePort: 31414
  selector:
    app: ibmmq
  type: NodePort
docker kubernetes ibm-mq telnet kubectl
1个回答
0
投票

这是kubectl port-forward命令的已知问题。它只连接到localhost接口。看到这个PR:https://github.com/kubernetes/kubernetes/pull/46517。我仍然在研究同样的问题。我看到两个解决方法:

  1. socat选项:(需要安装brew install socathttps://github.com/kubernetes/kubernetes/issues/43962#issuecomment-418305960,我不喜欢,因为我需要另一个端口来听取而不是转发
  2. pf解决方案:https://superuser.com/questions/473039/pfctl-port-forwarding-in-mac-osx#521803,我仍然无法工作。

我添加到/etc/pf.conf文件规则如:rdr pass on en0 inet proto tcp from any to any port 10001 -> 127.0.0.1 port 10001,其中en0是我的wifi界面:

en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    ether 6c:96:cf:dd:98:e9 
    inet6 fe80::b0:4b17:388d:8a1b%en0 prefixlen 64 secured scopeid 0x6 
    inet 192.168.12.82 netmask 0xfffffc00 broadcast 192.168.15.255
    nd6 options=201<PERFORMNUD,DAD>
    media: autoselect
    status: active

我有一个带kubectl端口转发的终端:kubectl port-forward mypod 10001:10001,但*:10001端口没有监听器(你可以查看命令:sudo lsof -PiTCP -sTCP:LISTEN

如果我修复它,我会编辑这个答案。

© www.soinside.com 2019 - 2024. All rights reserved.