什么是OpenShift Pod的CrashLoopBackOff状态?

15

我曾经在OpenShift Origin中的一个pod实例中看到过多个此状态的示例。 在这种情况下,是cdi camel示例的快速入门。 我已成功在本地(非-OpenShift)构建和运行它,但当我尝试在本地 OpenShift 上部署它(使用mvn -Pf8-local-deploy)时,对于该特定示例,我会得到以下输出(因相关性而被剪切):-

[vagrant@vagrant camel]$ oc get pods NAME READY STATUS RESTARTS AGE cdi-camel-z4czs 0/1 CrashLoopBackOff 4 2m

日志尾部如下:

  Error occurred during initialization of VM
  Error opening zip file or JAR manifest missing : agents/jolokia.jar
  agent library failed to init: instrument

有人可以帮我解决这个问题吗?

2个回答

11

如果 Pod 的状态变为 CrashLoopBackOff,通常表示容器内的应用程序无法正确启动,因此容器会立即退出。

如果您在 Pod 名称上使用 oc logs,可能看不到有用的信息,因为它将捕获最新尝试启动的内容,并可能错过一些消息。

您应该使用 --previous-p 选项以及 Pod 名称来提供给 oc logs,这将显示从上次尝试启动容器的完整日志记录。

如果您使用的是任意的 Docker 镜像,则可能会发生常见问题,导致容器无法启动,即应用程序镜像需要以 root 用户身份运行。 因为在容器内部以 root 用户身份运行应用程序仍具有风险,所以 OpenShift 默认情况下不允许您这样做,并会代替运行为任意分配的用户 ID。 应用程序镜像可能没有考虑到这种可能性,因此失败了。

因此,请尝试获取那些日志消息并查看问题所在。


为了确保我们在同一页面上,我正在尝试运行此处的示例,该示例应该可以在这个(vagrant) openshift盒子上开箱即用。我只是按照他们的“入门”示例此处进行操作。但它们不起作用。这是我第一次尝试这个示例,因此没有以前运行的版本。 - ZeroGraviti
1
有没有办法让Pod在“CrashLoopBackOff”状态下重启次数更少?比如说,我们可以告诉它在经过3次重启后就放弃,而不是5次? - ArtOfWarfare
你没有提及如何停止 Pod 的崩溃回滚循环,以便我可以调试操作系统文件。如果没有这个,你的服务器将继续被破坏,使得调试变得不可能。 - Philip Rego

1

但是如何停止它破坏Docker实例呢?或者如何连接到Openshift服务器? - Philip Rego

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接