当前位置: 首页 > 知识库问答 >
问题:

无法访问Kubernetes中的Jolokia HTTPendpoint

裴俊迈
2023-03-14

我有一个超级简单的Java库伯内特斯Tomcat应用程序在库伯内特斯内部运行,我用在minikube上运行的JVM Jolokia代理安装了它。我正在尝试配置我的库伯内特斯部署,以便我可以在容器外部访问Jolokiaendpoint。当我试图从我的minikube IP上的容器外部访问http://127.0.0.1/jolokia/versionendpoint时,我收到一个连接被拒绝。

我已经通过CATALINA_OPTS变量设置了Jolokia代理,并将其设置为在端口8778上运行,并在Dockerfile中公开了8778。我已经登录到容器,可以确认只要我在容器内就可以访问Jolokia代理。

FROM tomcat:8.0-alpine

ADD sample.war /usr/local/tomcat/webapps/
#ADD jolokia.war /usr/local/tomcat/webapps/

RUN mkdir /home/jolokia/
ADD jolokia-jvm-1.7.1.jar /home/jolokia/javaagent.jar
ENV CATALINA_OPTS="$CATALINA_OPTS -javaagent:/home/jolokia/javaagent.jar=port=8778"
RUN apk --no-cache add curl
EXPOSE 8080
EXPOSE 8778
CMD ["catalina.sh", "run"]

接下来,在我的Kube部署中,我指定设置一个nodePort来将8778映射到端口30087;当我拔出我的minikube IP并通过http://minikube-IP:30087/jolo KIA/version访问它时,我一直得到拒绝连接。这是我的部署:

--- 
apiVersion: v1
kind: Service
metadata: 
  labels: 
    app: sample-tomcat
  name: sample-tomcat
spec: 
  type: NodePort
  ports:
    - name: tomcat-port
      port: 8080
      nodePort: 30088
    - name: jolokia-port
      port: 8778
      nodePort: 30087
  selector: 
    app: sample-tomcat
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: sample-tomcat
  labels:
    app: sample-tomcat
spec:
  selector:
    matchLabels:
      app: sample-tomcat
  replicas: 1
  template:
    metadata:
      labels:
        app: sample-tomcat
    spec:
      containers:
      - name: sample-tomcat
        image: <redacted>/sampleapp:latest
        ports:
        - containerPort: 8080
        - containerPort: 8778

Jolokia 代理在我的容器内工作,但是如何在容器外部访问它?

共有1个答案

施文彬
2023-03-14

我需要将 Jolokia 代理主机设置为 0.0.0.0,因为它未在CATALINA_OPTS变量中使用正确的 IP。

ENV CATALINA_OPTS="$CATALINA_OPTS javaagent:/home/jolokia/javaagent.jar=port=8778,host=0.0.0.0"
 类似资料:
  • 名称:示例-服务 命名空间:默认 标签:run=load-balancer-example 注释: 选择器:run=load-balancer-example 类型:nodeport IP:10.108.214.162 端口:9090/tcp 目标端口:9090/tcp 节点端口:31105/tcp endpoint:192.168.1.23:9090,192.168.1.24:9090 会话关联

  • 下列服务正在运行: 返回错误 重新构建URL到:http://localhost:8080/ 正在尝试127.0.0.1... 连接到127.0.0.1端口8080失败:连接被拒绝 连接到本地主机端口8080失败:连接被拒绝 关闭连接0卷:(7)无法连接到本地主机端口8080:连接被拒绝 我使用以下指南https://github.com/kubernetes/kubernetes/tree/ma

  • 我正试图调查和学习更多关于库伯内特斯的知识,我遵循了指南https://blog.hazelcast.com/deploy-monitor/在我的kubernetes集群中安装hazelcast监视器。 如果我看到kubernetes仪表板,它有2个部署、3个pod和my-service为绿色。 运行此: 但当我跑的时候 它打开浏览器,如果我访问: 我有一个404。我做错了什么?

  • 当我执行时 kubectl代理 它为我提供了o/p:开始在虚拟机上的127.0.0.1:8001上提供服务 我想在主机上看到仪表板,这给我带来了问题。 192 168 113 8001 api命名空间库贝系统服务https kubernetes仪表板代理 有什么问题,我没明白。我是库伯内特斯的新手。谢谢

  • 在我的 OVH 托管 Kubernetes 集群中,我正在尝试公开 NodePort 服务,但看起来无法通过以下方式

  • 我在Google Container Engine上部署了一个容器,它运行良好。现在,我想公开它。 这个应用程序是一个侦听2个端口的服务。使用kubectl公开部署,我创建了2个负载均衡器,每个端口一个。 我制作了两个负载平衡器,因为kubectl expose命令似乎不允许使用多个端口。虽然我在kubectl上将其定义为type=LoadBalancer,但一旦在GKE上创建了它们,它们就被定义