kubernetes
service
我在这里有什么选择?我应该如何允许外部到kubernetes群集Windows网关访问这10个服务器的jmx端口?这里有什么做法吗?
另一个选择是使用 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。