我正在尝试使用
在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
答案 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身份运行的能力。