2017-10-16 38 views
0

我刚创建的图像使用泊坞窗文件和改变我只是用用户:如何更改kubernetes映射卷的许可/泊坞

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的,但它使目录根:根

灿有人建议我在这里做错了吗?

回答

2

这是因为码头工人。它仅以root权限安装卷,您可以使用chmod进行更改,但只能在容器启动后进行更改。

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

您可以在kubernetes中执行的操作是使用fsGroupforce该卷可通过指定的GID进行写入。这是工作的解决方案,并记录在案。这里更多信息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 
+0

嘿,你能不能给我举例如何编写利用kubernetes与fsGroup。在我的例子给出以上 –

+0

@SaganPariyar我修改了我的答案,现在它有例子部署使用'fsGroup' – 3h4x

+0

嘿,谢谢你的答案,其实错误是别的。之前我们使用root用root创建docker镜像,并使用root用它映射创建的目录,下次我使用myuser作为映射卷时,已经拥有使用root用户创建的目录,所以它提供了权限问题。我只是删除目录,并用myuser重新创建它,它工作正常。 –