另一个选择是使用 kubectl port-forward 将JMX端口从K8 pod转发到本地PC 。
我这样做是这样的:
1)。将以下JVM选项添加到您的应用程序:
-Dcom.sun.management.jmxremote-Dcom.sun.management.jmxremote.authenticate=false-Dcom.sun.management.jmxremote.ssl=false-Dcom.sun.management.jmxremote.local.only=false-Dcom.sun.management.jmxremote.port=1099-Dcom.sun.management.jmxremote.rmi.port=1099-Djava.rmi.server.hostname=127.0.0.1
这里的关键部分是:
相同的端口应用作“ jmxremote.port”和“ jmxremote.rmi.port”。只需要转发一个端口。
127.0.0.1应该作为rmi服务器主机名传递。JMX连接需要通过端口转发才能工作。
2)。通过kubectl将JMX端口(1099)转发到本地PC:
kubectl port-forward <your-app-pod> 1099
3)。打开jconsole连接到本地端口1099:
jconsole 127.0.0.1:1099
这种方式使得可以通过JMX调试任何Java Pod,而不必通过K8服务公开公开JMX(从安全性角度来看更好)。
另一个可能有用的选项是将Jolokia(https://jolokia.org/)代理附加到容器内的Java进程,以便它通过HTTP端口代理JMX并公开或端口转发此HTTP端口以查询JMX。通过HTTP。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)