【发布时间】:2019-11-21 14:29:40
【问题描述】:
我有一个远程 jvm 应用程序在 kubernetes 管理的 docker 容器中运行:
java -jar /path/to/app.jar
-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
当我尝试使用端口转发和 VisualVM 进行调试时,它仅在我在本地计算机上使用端口 1099 时才有效。端口 1098、10900 或任何其他端口都不起作用。这适用于 VisualVM:kubectl port-forward <pod-name> 1099:1099。 这个没有: kubectl port-forward <pod-name> 1098:1099
我在 VisualVM 中使用“添加 JMX 连接”选项,连接到 localhost:1099 或 localhost:1098。前者有效,后者无效。
为什么我不能在 VisualVM 中使用非 1099 端口?
UPD 我相信这个问题与 VisualVM 有关,因为无论我选择什么本地端口,端口转发似乎都可以正常工作:
$ kubectl port-forward <pod> 1098:1099
Forwarding from 127.0.0.1:1098 -> 1099
Forwarding from [::1]:1098 -> 1099
Handling connection for 1098
Handling connection for 1098
【问题讨论】:
-
能把jvm应用部署贴在k8s上吗?还是
kubectl describe deployment <jvm_deployment_name>? -
@Crou 有没有你感兴趣的特定部分?不幸的是,我无法分享完整的部署描述,但我看到几乎所有参数都是特定于应用程序的,既没有提到端口也没有提到网络,也没有提到这些方面的任何内容
-
部署中是否提到了端口 1098 和 10900?您是否通过服务公开了这些端口?
-
@Crou 不,那里没有提到任何端口。也没有 1099
-
那么1099端口转发是如何工作的呢?这很奇怪。
标签: docker kubernetes jvm visualvm