首页 文章

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

提问于
浏览
0

我正在尝试使用docker hub存储库上托管的映像将IBM MQ部署到我的本地MAC机器 . 我正在使用Docker边缘版本和Kubernetes支持 .

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

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

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

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

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

Commands being used:

To create port forwarding rule using kubectl, checking netstat and connecting with 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 file contents

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

EDIT: ADDED K8S Service to the post

Kubernetes service YAML file contents

apiVersion: v1
kind: Service
metadata:
  name: myservice-nodeport
  labels:
    app: ibmmq
spec:
  ports:
  - port: 3000 
    targetPort: 1414
    nodePort: 31414
  selector:
    app: ibmmq
  type: NodePort

1 回答

  • 0

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

    我添加了 /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

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

相关问题