1

我正在使用Docker镜像在Origin 3.1中创建应用程序。openshift pod失败并重新启动频繁

每当我创建图像时,新的pod被创建,但它会一次又一次地重新启动,并最终将状态设置为“CrashLoopBackOff”。

我分析了pod的日志,但它没有提供任何错误,所有日志数据与成功运行的应用程序的预期一致。因此,无法确定原因。

今天我在下面的链接中发现,它说“以root身份运行容器内的应用程序仍然存在风险,OpenShift不允许您在默认情况下执行此操作,而是将其作为任意指定的用户ID运行”。

What is CrashLoopBackOff status for openshift pods?

这里我的形象是只使用root用户,怎样做才能使这项工作?因为日志显示没有错误,但pod不断重新启动。

任何人都可以请帮助我这个。

+0

是否使用了''-p''或''--previous''标志''OC logs'',看是否从以前的尝试日志开始荚说明了什么?在这种情况下只查看最新情况可能不会导致您捕获问题。你的应用程序是否会记录到标准输出,以便记录日志? –

回答

0

你看到了这一点,因为你的图像启动的任何过程都不是一个长时间运行的过程,并且没有发现TTY,并且容器只是退出并重复重新启动,就openshift而言,这是一个“崩溃循环”。

你dockerfile以下提到:

入口点[ “容器入口点”]

其实这个 “容器入口点” 干什么?

你需要检查。

你使用-p或--previous标志OC日志,看看如果从以前的尝试日志开始荚显示任何

+0

该容器入口点是标准OpenShift S2I助洗剂的一部分。它所做的只是设置一些环境变量并可能激活SCL包,然后执行由CMD定义的任何内容。这不应该是任何问题的根源。 –

+0

您好@Jaspreet,感谢您在这里的回复。其实我正在运行一个Play Java应用程序。下面是Dockerfile的内容: 入口点[“活化剂”,“开始”] 我尝试使用-p日志看到,但它并没有显示出任何错误。服务器启动正常,但立即退出并一次又一次启动整个构建过程,最终崩溃。虽然相同的Dockerfile在openshift之外只使用“码头运行”工作正常。任何想法在OpenShift中可能是什么问题? – priyank

0

Red Hat的recommendation将使GID拥有的文件组为0 - 容器中的用户始终位于根组中。您将无法chown,但是您可以选择性地公开要写入的文件。

第二个选项: 为了允许使用任何指定用户或根(0)用户打造OpenShift的图像,你可以在项目的建设者服务帐户添加(系统:serviceaccount ::生成器)到特权安全上下文约束(SCC)。或者,您可以允许所有图像以任何用户身份运行。

+0

您好,感谢这里的响应,修改SCC后,我能够建立从Dockerfile应用程序,它运行作为根用户,但现在的问题是容器被一次又一次重新开始而无需在日志中给予任何错误,最后“CrashloopBackOff”状态显示。如何在openshift中以Daemon的身份运行容器?为什么它发生?任何关于此的指针都会非常有帮助。再次感谢! – priyank

0

你可以看到使用

kubectl logs <podname> -p 

日志这应该给你,为什么荚失败的错误。

+0

你好,谢谢,我查了一下使用“openshift KUBE日志-p ”,但在日志中没有错误,因为我昨天容器重新启动218次未抛出任何错误。你能帮我吗?再次感谢! – priyank

0

我能够通过创建脚本“运行来解决这个.SH”与最终内容:

while :; do 
sleep 300 
done 

和Dockerfile:

ADD run.sh /run.sh 
RUN chmod +x /*.sh 
CMD ["/run.sh"] 

这样它的作品,谢谢大家对指出的原因,这让我找到第r esolution。但一个疑问,我仍然有原因的过程获取openshift在这种情况下,只有,我曾尝试在其中只是工作没有脚本,则有睡眠罚款同样的方式运行Tomcat服务器退出。