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

Sag*_*yar 8 docker kubernetes

我刚刚使用Docker文件创建了图像,并且用于更改刚才使用的用户:

USER myuser
Run Code Online (Sandbox Code Playgroud)

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

chown -R myuser:myuser /data-dir
Run Code Online (Sandbox Code Playgroud)

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

使用以下代码:

volumeMounts:
        - name: etcdefs
          mountPath: /data-dir
      volumes:
      - name: etcdefs
        persistentVolumeClaim:
          claimName: efs-etcd
Run Code Online (Sandbox Code Playgroud)

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

任何人都可以在这里暗示我做错了吗?

3h4*_*h4x 17

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

你可以在这里阅读更多相关信息https://github.com/moby/moby/issues/2259 这个问题已经存在很长时间了.

您可以在kubernetes中执行的操作是使用fsGroup强制该卷可由指定的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
Run Code Online (Sandbox Code Playgroud)