我创建了以非root用户身份运行的映像,但是当我对卷使用configmap时,volume附带的文件是root用户。我想更改用户,但不知道如何更改用户。
我从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
答案 0 :(得分:0)
当您必须以非root用户身份在容器内运行进程时,这成为Kubernetes部署/状态集的挑战之一。但是,将卷挂载到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将为root(0),创建的任何文件也将由用户1099和指定runAsGroup时,组1099) fsGroup:指定附加的任何卷的所有者将是GroupId 1099的所有者,并且在该卷下创建的任何文件将具有nonrootgroup:nonrootgroup的许可。