Jas*_*Jas 29 docker kubernetes kubernetes-service
kubernetes我可以公开服务service.这可以.我有什么选择?我应该如何允许这个外部的kubernetes集群windows网关访问那些10个服务器的jmx端口?有什么做法吗?
dan*_*yar 70
另一个选择是使用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
Run Code Online (Sandbox Code Playgroud)
这里的关键部分是:
相同的端口应该用作'jmxremote.port'和'jmxremote.rmi.port'.这只需要转发一个端口.
127.0.0.1应作为rmi服务器主机名传递.这是JMX连接通过端口转发工作所必需的.
2).通过kubectl将JMX端口(1099)转发到本地PC:
kubectl port-forward <your-app-pod> 1099
Run Code Online (Sandbox Code Playgroud)
3).打开与本地端口1099的jconsole连接:
jconsole 127.0.0.1:1099
Run Code Online (Sandbox Code Playgroud)
这种方式可以通过JMX调试任何Java pod,而无需通过K8服务公开公开JMX(从安全角度来看更好).
另一个可能有用的选项是将Jolokia(https://jolokia.org/)代理附加到容器内的Java进程,以便它通过HTTP端口代理JMX并公开或端口转发此HTTP端口以查询JMX通过HTTP.
| 归档时间: |
|
| 查看次数: |
9831 次 |
| 最近记录: |