Tomcat不使用openshift起源。无法加载server.xml

时间:2018-02-05 11:42:53

标签: java tomcat openshift

我正在尝试使用

在Openshift上部署Tomcat
$oc new-app tomcat:latest

当我做的时候

$oc get pods

我正在

NAME                            READY     *STATUS*             RESTARTS   *AGE*

tomcat-1-9j5qx                  0/1       *CrashLoopBackOff*   16         *1h*

当我用 $ oc logs检查日志时tomcat-1-9j5qx 我得到了

Feb 05, 2018 11:26:41 AM org.apache.catalina.startup.Catalina load
WARNING: Unable to load server configuration from [/usr/local/tomcat/conf/server.xml]

Feb 05, 2018 11:26:41 AM org.apache.catalina.startup.Catalina load
WARNING: Unable to load server configuration from [/usr/local/tomcat/conf/server.xml]

Feb 05, 2018 11:26:41 AM org.apache.catalina.startup.Catalina start
SEVERE: Cannot start server. Server instance is not configured.

不确定我应该做些什么来摆脱这个CrashLoopBackOff

1 个答案:

答案 0 :(得分:1)

默认情况下,OpenShift使用随机的非root uid来运行pod,而这个/usr/local/tomcat/conf/servers只允许root读取它。运行此命令以允许OpenShift使用任何uid运行pod:

oc adm policy add-scc-to-user anyuid -z default

此策略更改只能由群集管理员执行。普通用户甚至项目管理员都无法做到这一点。

因为您授予以root身份运行的权限,即使只在容器中运行,最好创建一个单独的服务帐户以仅运行需要额外权限的应用程序,而不是使用default服务帐户。

例如:

$ oc create serviceaccount supremo
serviceaccount "supremo" created
$ oc adm policy add-scc-to-user anyuid -z supremo
$ oc patch dc/tomcat --patch '{"spec":{"template":{"spec":{"serviceAccountName": "supremo"}}}}'
deploymentconfig "tomcat" patched

您也应该只针对您信任的第三方图片执行此操作。不要给任意图像提供以root身份运行的能力。