我在这里看到了很多关于Helm和默认名称空间的问题,因此发布另一个名称空间是很尴尬的。我相信我已经看过了,但并没有找到解决问题的办法。
舵机版本为3.9.3 Kubernetes: OpenShift 4.9
我通过简单的操作创建了一个nginx图表:
helm create disco当我在默认项目/命名空间中部署此应用程序时,它可以正常工作。但是,当我在非默认工作区中部署它时,它会失败。
我在非默认工作区中部署的命令:
oc new-project helm-sandbox
helm install disco . --namespace helm-sandboxCLI似乎表明部署成功。但是豆荚里一直有CrashLoopBackoff。
pod日志显示以下错误消息:
nginx: [warn] the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:2
2022/09/08 02:00:19 [emerg] 1#1: mkdir() "/var/cache/nginx/client_temp" failed (13: Permission denied)
nginx: [emerg] mkdir() "/var/cache/nginx/client_temp" failed (13: Permission denied)你知道我为什么会失败吗?
发布于 2022-09-11 00:15:06
默认情况下,每个Pod在default上使用OpenShift服务帐户,并且服务帐户附加restricted SCC。
此外,Pod中的UID是随机从定义Pod的名称空间的openshift.io/sa.scc.uid-range注释中定义的范围中选择的。
因此,random UID可能没有写入/var/cache/nginx/目录的权限。
但是,使用anyuid或非根SCCs将UID更改为Pod使用的服务帐户并不是一个好主意,除非Pod需要强大的许可才能工作。
如果您希望缓存目录是一个临时目录,那么挂载emptyDir或临时卷更好地解决它。
如果希望持久化,请将持久性卷挂载为/var/cache/nginx。
如果需要更改UID,请向服务帐户提供任意或非根SCC。但是,给预定义的SCC赋予SCC是不好的.因此,如果您需要使用SCC而不是restricted,您应该创建一个服务帐户,并使用它来启动您的Pod。
希望这些都有助于解决这一问题。
https://stackoverflow.com/questions/73643053
复制相似问题