无法运行以777权限挂载为configmap的Bash脚本

问题描述 投票:0回答:2

这可能很简单,但我似乎无法弄清楚为什么作为configmap挂载的bash脚本不能以root身份运行:

root@myPodId:/opt/nodejs-app# ls -alh /path/fileName 
lrwxrwxrwx 1 root root 18 Sep 10 09:33 /path/fileName  -> ..data/fileName

root@myPodId:/opt/nodejs-app# whoami
root

root@myPodId:/opt/nodejs-app# /bin/bash -c /path/fileName
/bin/bash: /path/fileName: Permission denied

我猜,但我认为与Docker一样,容器中的根不是实际的根,而是更像伪root帐户。

如果是这种情况,并且文件无法以这种方式运行,那么每次脚本更改时如何在不必重新创建Docker容器的情况下包含脚本?

kubernetes kubernetes-helm
2个回答
1
投票

你不能运行作为ConfigMap挂载的脚本并不奇怪。资源本身的名称(ConfigMap)应该让您不使用它。作为一种解决方法,您可以将脚本放在一些git repo中,然后将EmptyDir挂载到使用git克隆repo的InitContainer中,然后将EmptyDir挂载到Pod的容器中。 InitContainer将在容器创建期间每次下载最新版本


0
投票

好吧,所以我没有文档的链接,但配置文件肯定是安装在ReadOnly文件系统上。我想到的是将文件的内容捕获到另一个文件中,本地根目录可以在我的情况下编写/usr/local,这样就可以运行文件了。

如果有人提出更聪明的解决方案,我会将其标记为正确的答案。

© www.soinside.com 2019 - 2024. All rights reserved.