【发布时间】:2020-10-02 15:34:56
【问题描述】:
根据the kubernetes doc,securityContext.fsGroup可以用来指定挂载卷的权限:
由于指定了 fsGroup 字段,容器的所有进程也是补充组 ID 2000 的一部分。卷 /data/demo 的所有者以及在该卷中创建的任何文件都将是组 ID 2000。
我无法使用该功能。
test.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: task-pv-volume
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /home/docker/mypv2
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: task-pv-claim
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
---
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
securityContext:
runAsUser: 1001
runAsGroup: 1001
fsGroup: 1001
volumes:
- name: myvolume
persistentVolumeClaim:
claimName: task-pv-claim
containers:
- name: mycontainer
image: myimage:latest
command: ['sleep', 'infinity']
volumeMounts:
- mountPath: "/mytest"
name: myvolume
Dockerfile
FROM python:3.6
RUN groupadd --gid 1001 mygroup
RUN useradd --uid 1001 --gid mygroup --shell /bin/bash --create-home myuser
当我在 pod 上运行 shell 时,我正确地登录为用户 1001 (myuser)。但是,挂载的卷归组 root 所有:
myuser@mypod:/$ ls -la /mytest
total 8
drwxr-xr-x 2 root root 4096 Jun 12 18:49 .
drwxr-xr-x 1 root root 4096 Jun 12 18:49 ..
在 minikube 1.11.0 和 kubernetes 1.18.0 上测试
注意:在部署场景中,我无法访问 kubernetes 主机,因此无法在其中运行 chown 或 chmod。
【问题讨论】:
-
你能通过在容器上设置
securityContext.allowPrivilegeEscalation: false来检查吗? -
@hoque 我测试过:没有变化。
标签: kubernetes