jvisualvm , jstatd 与k8s

jvisual 2种连接方式

 jviaualvm 有2中连接方式, jmx, jstatd
 通过jmx 方式, 无法使用profiling 功能, jstatd 可以(jvm 版本必须支持, 发现openjdk 不支持)
 
  jmx 通过 在jvm 启动时,添加jmx 参数来启动监听端口
  jstatd 通过 jstatd 命令来启动rmi server ,  jstatd 会监听2个端口, 一个是1099 (可以通过参数改变, 用来控制指令), 一个随机端口(这个端口是用来传输数据的,猜测), 

用jstatd 来连接k8s 里, pod 中的容器

k8s 里要想用jstatd , 必须把这2个端口都暴露出来, 另外在k8s 里, 映射出去的随机端口必须跟目标端口一样,否则jvisualvm 能连上, 但无法扫描到remote host 里的applications   .每次重新启动jstatd , 都会重新生成一个新的随机端口, 需要更改k8s nodeport 设置,把随机端口暴露出去。
具体步骤
1. 在目标pod 里,对应container 里启动jstatd
2. netstat -alp |grep jstatd  查看 jstatd 的2个端口, 一个1099, 一个随机端口
3.  创建2个nodeport , 暴露目标pod 的 2个端口,(1099 , 与随机端口), 暴露端口时, 1099, 可以映射成不同的端口, 但随机端口必须与原始随机端口一样。
4.  用jvisualvm , jstatd 连接方式连接目标pod 所在的node 
5. 连接后, 等3s , 会自动把目标container 上的java application 显示在 node 下
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐