如何在kubernetes / Docker中更改映射卷的权限

我刚刚使用Docker文件创build图像,并更改我刚才使用的用户:

USER myuser 

我们正在使用一个目录来存储数据,我们使用以下命令来更改该目录权限

 chown -R myuser:myuser /data-dir 

这个Docker文件是用于etcd的,我们希望/ data-dir使用etcd来存储数据。 现在,我们使用kubernetes yml文件将/ data-dir映射到efs卷。

用下面的代码:

 volumeMounts: - name: etcdefs mountPath: /data-dir volumes: - name: etcdefs persistentVolumeClaim: claimName: efs-etcd 

在此之后,我期望,映射的目录/ data-dir应该具有myuser:myuser的权限,但是它将根目录设置为root:root

任何人都可以build议我在这里做错了吗?

这是因为docker工人。 它只用root权限装入卷,你可以用chmod来修改它,但是只能在容器启动之后。

你可以在这里阅读更多关于它https://github.com/moby/moby/issues/2259这个问题在这里很长一段时间。

你可以在kubernetes中做什么是使用fsGroup强制该卷可以通过指定的GID写入。 这是工作的解决scheme,也logging在案。 更多信息在这里https://kubernetes.io/docs/tasks/configure-pod-container/security-context/

这是一个示例部署:

 apiVersion: extensions/v1beta1 kind: Deployment metadata: name: alpine spec: replicas: 1 template: metadata: labels: app: alpine spec: securityContext: fsGroup: 1000 containers: - name: alpine image: alpine volumeMounts: - mountPath: /var/alpine name: alpine volumes: - name: alpine awsElasticBlockStore: volumeID: vol-1234567890 fsType: ext4