【问题标题】:Error: Unable to access jarfile (Kubernetes)错误:无法访问 jarfile (Kubernetes)
【发布时间】:2021-01-22 11:23:11
【问题描述】:
kubectl get pods -n abc
NAME                       READY         STATUS      RESTARTS   AGE
abc-v2-78b59ccc4f-85xgr   0/1     CrashLoopBackOff   27         129m

面临以下错误:

> ➜  ~ kubectl logs -f abc-v2-78b59ccc4f-85xgr -n 
Error: Unable to access jarfile abc.jar

我假设 jar 不存在或缺少所需的访问权限。 请在这里指导我,如何进行。

编辑 1:正如@howard-roark 所建议的,Jar 在容器内可用,得到相同的错误消息。

编辑 2:现在在 java 命令中使用 .jar 检查结果

编辑 4:理想情况下,应该只有一个处于运行状态的实例。

【问题讨论】:

  • 您好,您能找出问题所在吗?
  • 是的,这是排序的。
  • 解决方案是什么?
  • 我的 dockerfile 有问题

标签: java spring-boot docker kubernetes


【解决方案1】:

Kubernetes 是一个容器编排器。它将您的图像作为容器运行。您显示的错误看起来像是应用程序错误,而不是 Kubernetes 错误。我的处理方法是:

  1. 检查您的应用程序调用的 jar 文件是否在您的映像中。您可以在本地执行此操作,方法是运行您的映像并执行,以查看您的应用程序运行的 jar 文件是否存在。
docker run -it <image> /bin/bash

或者您可以通过 Kubernetes 执行类似的命令来执行到您的 pod:

kubectl run -i --tty testjavacontainer --image=<image> -- /bin/bash
  1. 如果它存在,那么我将确认它的路径并确保我的 java 命令正确引用了该路径。如果它不存在,那么我会调整我的 Dockerfile 以确保它位于我的 java 命令期望的路径中。

简而言之,我会将其作为standard java error 处理,其细微差别在于它恰好在容器中运行。

【讨论】:

  • 按照你的建议,我可以在容器中找到罐子。但得到相同的错误信息。详情请查看问题中的编辑 1。
  • 自过去 3 天以来,我一直被这个问题困扰。 :-(
  • 在您的命令中,看起来您最后没有包含 .jar - 看起来您包含了除 .jar 之外的所有内容,还是我误读了?
  • java -jar -Dspring.profiles.active=dev target/orbis-microservice-0.0.1-SNAPSHOT.jar --server.port=80 --spring.profiles.active=dev 这是我在 dockerfile 中的 jar 路径。
  • 好的,我认为这更像是一个一般性的故障排除问题——我认为你问的最初的错误应该得到解决——我没有看到 orbis-microservice.jar,它看起来它有一个完全不同的名字。无论如何,希望您现在对如何解决这些问题有更好的了解
猜你喜欢
  • 1970-01-01
  • 2017-04-13
  • 2019-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-03
  • 2012-09-11
  • 2012-08-10
相关资源
最近更新 更多