Un'altra opzione è quella di inoltrare porta JMX da K8 pod to PC locale con kubectl port-forward.
lo faccio in questo modo:
1). Aggiungere seguenti opzioni JVM per la vostra applicazione:
-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
La parte critica è che:
La stessa porta dovrebbe essere usato come 'jmxremote.port' e 'jmxremote.rmi.port'. Questo è necessario per inoltrare solo una porta.
127.0.0.1 deve essere passato come nome host del server rmi. Questo è necessario per la connessione JMX per funzionare tramite port forwarding.
2). Inoltrare la porta JMX (1099) al PC tramite looptionscal kubectl:
kubectl port-forward <your-app-pod> 1099
3). Aperto il collegamento JConsole alla porta locale 1099:
jconsole 127.0.0.1:1099
questo modo perché rende possibile eseguire il debug di qualsiasi pod Java tramite JMX senza dover esporre pubblicamente JMX tramite il servizio K8 (che è meglio dal punto di vista della sicurezza).
Questa è la spiegazione più semplice che ho incontrato e funziona perfettamente. Grazie! –