简体   繁体   English

从kubernetes pod转发的JMX不同端口

[英]JMX different port forward from kubernetes pod

I've got problem forwarding jmx from kubernetes pod to localhost. 我从kubernetes pod转发jmx到本地主机有问题。 Everything works fine when port is forwarded to the same port: 当端口转发到同一端口时,一切工作正常:

kubectl port-forward ... 9010:9010 OR
kubectl port-forward ... 9010

However, when I try to forward to a different local port, 但是,当我尝试转发到其他本地端口时,

kubectl port-forward ... 9011:9010

neither jconsole or jms can connect. jconsole或jms都无法连接。

It is blocking me from profiling multiple applications at once. 它阻止了我一次分析多个应用程序。

JMS Error: JMS错误:

com.oracle.jmc.rjmx.ConnectionException caused by java.rmi.NoSuchObjectException: no such object in table
    at com.oracle.jmc.rjmx.internal.RJMXConnection.connect(RJMXConnection.java:406)
    at com.oracle.jmc.rjmx.internal.ServerHandle.doConnect(ServerHandle.java:88)
    at com.oracle.jmc.rjmx.internal.ServerHandle.connect(ServerHandle.java:78)
    at com.oracle.jmc.console.ui.editor.internal.ConsoleEditor$ConnectJob.run(ConsoleEditor.java:73)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
Caused by: java.rmi.NoSuchObjectException: no such object in table
    at java.rmi/sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:283)
    at java.rmi/sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:260)
    at java.rmi/sun.rmi.server.UnicastRef.invoke(UnicastRef.java:161)
    at java.management.rmi/javax.management.remote.rmi.RMIServerImpl_Stub.newClient(Unknown Source)
    at java.management.rmi/javax.management.remote.rmi.RMIConnector.getConnection(RMIConnector.java:2105)
    at java.management.rmi/javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:321)
    at com.oracle.jmc.rjmx.internal.RJMXConnection.connectJmxConnector(RJMXConnection.java:451)
    at com.oracle.jmc.rjmx.internal.RJMXConnection.establishConnection(RJMXConnection.java:427)
    at com.oracle.jmc.rjmx.internal.RJMXConnection.connect(RJMXConnection.java:399)
    ... 4 more

jconsole error: jconsole错误:

Connection to localhost:9011 did no succeed.

This is an RMI issue. 这是一个RMI问题。 The problem is that the RMI stub delivered to the JMX client is created for 9010 and so it fails when attempting to connect at 9011. There's a couple of decent solutions outlined here . 问题在于,传递给JMX客户端的RMI存根是为9010创建的,因此在尝试在9011进行连接时会失败。 这里概述了几个不错的解决方案。 Another option is to switch to JMXMP which is a pure socket JMX protocol so port forwarding works without any additional workarounds. 另一个选择是切换到JMXMP ,它是纯套接字JMX协议,因此无需任何其他变通办法即可进行端口转发。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM