我创建了以非根用户身份运行的映像,但是当我使用configmap作为卷时,卷附带的文件是根用户。我想更改用户,但我不知道如何更改用户。
我在google上搜索了stackoverflow,但我什么也没找到。
volumeMounts:
- name: test
mountPath: /opt/KOBIL/SSMS/home/configutil
volumes:
- name: test
configMap:
name: slaveconfig
Actual:
lrwxrwxrwx. 1 root root 17 May 21 12:53 config.xml -> ..data/config.xml
lrwxrwxrwx. 1 root root 18 May 21 12:53 modules.xml -> ..data/modules.xml
Expected:
lrwxrwxrwx. 1 xxuser xxuser 17 May 21 12:53 config.xml -> ..data/config.xml
lrwxrwxrwx. 1 xxuser xxuser 18 May 21 12:53 modules.xml -> ..data/modules.xml发布于 2019-09-13 12:47:24
这是Kubernetes部署/状态集面临的挑战之一,当您必须以非root用户身份在容器内运行进程时。但是,当您将卷挂载到pod时,它总是在root:root的权限下挂载。因此,非root用户必须有权访问要在其中读写数据的文件夹。
请按照下面的步骤进行操作。
在Dockerfile中创建用户组并分配groudID。创建具有userid的用户,并在Dockerfile中添加到组中。递归地更改用户进程要读/写的文件夹的所有权。在pod spec上下文中的deployment/Statefulset中添加以下行。
规格: securityContext: runAsUser: 1099 runAsGroup: 1099 fsGroup: 1099
runAsUser:指定对于Pod中的任何容器,所有进程都以用户ID 1099运行。runAsGroup:为Pod中任何容器中的所有进程指定主组ID 1099。(如果忽略此字段,则容器的主组ID将为根(0),当指定runAsGroup时,创建的任何文件也将归用户1099和组1099所有) fsGroup:指定附加的任何卷的所有者将是GroupId 1099的所有者,并且在其下创建的任何文件将具有nonrootgroup:nonrootgroup的权限。
https://stackoverflow.com/questions/56239932
复制相似问题