Kubernetes fsGroup未更改PersistentVolume上的文件所有权
在主机上,挂载目录(Kubernetes fsGroup未更改PersistentVolume上的文件所有权,kubernetes,Kubernetes,在主机上,挂载目录(/opt/testpod)中的所有内容都归uid=0 gid=0所有。我需要这些文件归容器决定的任何人所有,即不同的gid,以便能够在那里写入。我正在测试的资源: --- apiVersion: v1 kind: PersistentVolume metadata: name: pv labels: name: pv spec: storageClassName: manual capacity: storage: 10Mi accessM
/opt/testpod
)中的所有内容都归uid=0 gid=0所有。我需要这些文件归容器决定的任何人所有,即不同的gid,以便能够在那里写入。我正在测试的资源:
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv
labels:
name: pv
spec:
storageClassName: manual
capacity:
storage: 10Mi
accessModes:
- ReadWriteOnce
hostPath:
path: "/opt/testpod"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc
spec:
storageClassName: manual
selector:
matchLabels:
name: pv
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Mi
---
apiVersion: v1
kind: Pod
metadata:
name: testpod
spec:
nodeSelector:
foo: bar
securityContext:
runAsUser: 500
runAsGroup: 500
fsGroup: 500
volumes:
- name: vol
persistentVolumeClaim:
claimName: pvc
containers:
- name: testpod
image: busybox
command: [ "sh", "-c", "sleep 1h" ]
volumeMounts:
- name: vol
mountPath: /data
pod运行后,I
kubectl exec
进入pod,并且ls-la/data
显示gid=0仍然拥有的所有内容。根据库伯的一些文件,fsGroup
应该在吊舱启动时检查所有东西,但没有发生。请问我做错了什么?主机路径类型PV不支持安全上下文。要写入卷,您必须是root用户。本文档和本文档详细介绍了:
在基础主机上创建的目录只能由root用户写入。您需要以根用户身份在中运行进程,或者修改主机上的文件权限,以便能够写入
主机路径
卷
您可能还想检查这个描述为什么更改主机目录权限是危险的
人们描述的解决方法是授予用户sudo权限,但这实际上使得将容器作为非root用户运行的想法毫无用处
安全上下文似乎与emptyDir卷(在k8s文档中有很好的描述)配合良好。您可以尝试使用不同于runAsGroup的值fsGroup吗?尝试使用securityContext:privileged:true runAsUser:1000。您也可以尝试使用init容器。该github链接用于minikube
。它们在kubernetes
本身中是否有相同的bug/未实现的特性?Upd:没关系,kubernetes
PR也这么说。