当前位置: 首页 > 面试题库 >

多个应用程序节点如何在kubernetes中公开jmx?

华宏逸
2023-03-14
问题内容
  1. kubernetes我可以公开服务service。这可以。
  2. 可以说我有1个Web实例和10个Java服务器实例。
  3. 我有一个Windows网关,用于通过安装在其上的jconsole访问这10个Java服务器实例。
  4. 显然,我没有通过kubernetes服务公开所有应用程序的jmx端口。

我在这里有什么选择?我应该如何允许外部到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。



 类似资料:
  • 目前,我正面临一个技术决策,我个人无法找到解决方案。 我目前正在开发一个多租户数据库。 结构如下: 有一个核心数据库,用于保存特定租户的数据和关系 有多个租户数据库实例(通过核心数据库中的查询,可以确定我应该连接到哪个租户id) 每个租户都位于一个单独的数据库实例(位于单独的服务器上) 每个租户都有特定的数据,其他租户都不应访问这些数据 每个数据库最好是mySQL(但如果有更好的选择,我愿意接受建

  • 问题内容: 预见到多点触摸界面将变得越来越普遍的一天,Java中是否有可用于开发触摸应用程序的库?我正在寻找类似于MouseListener / MouseMotionListener / MouseWheelListener的接口。 问题答案: MT4j项目提供了用Java开发多点触控应用程序所需的一切。所有众所周知的多点触摸手势均已内置,可以像监听鼠标事件一样简单地进行访问(例如:compon

  • 我在一个基于OpenStack的私有云上有一个Kubernetes集群。需要在特定端口上公开我的服务。我可以使用Nodeport来完成此操作。但是,如果我尝试创建与第一个类似的另一个服务,我将无法公开它,因为我必须使用相同的端口,并且它已经被第一个服务占用了。 我注意到我可以在公共云中使用LoadBalancer,但我假设这在OpenStack中是不可能的?我也尝试使用Kubernetes的Ing

  • 问题内容: 我有一个大学项目,我需要在Java中开发对等系统进行文件共享。 因此,从本质上讲,几个用户应该能够使用对等系统共享文件。 有人可以给我一些有关如何构建此系统的指南吗? 问题答案: 对于大学项目,请阅读一些有关套接字的教程。我相信这就是您的教授对您的期望。以以下内容为例:http : //www.oracle.com/technetwork/java/socket-140484.html

  • 我试图找到这个问题的答案,但在kubernetes文档或任何问答论坛中都找不到。 我有一个运行有4个节点的kubernetes集群。是否可以创建第二个集群,重用前一个集群中的一个或多个节点?或者一个节点被限制在单个kubernetes集群中? 我正在使用RKE(用于部署k8集群的牧场工具)运行实际的集群,我发现这个问题让我怀疑这种可能性。 感谢您的澄清。

  • 我正在尝试使用单个Service yaml在多个节点上设置对Pods的访问。Pods都有相同的标签(例如),但分布在多个节点上,而不是在单个节点上。 据我所知,我可以设置一个服务,通过节点端口转发对Pod的访问,比如: 其中访问节点上的端口30000会转发到pod上的端口5000。 如果我在多个节点上有pod,有没有一种方法可以让客户端访问一个endpoint,例如服务本身,从而在循环中获得任何p