首页 > 解决方案 > 使用 OpenShift 进行卷挂载的写入权限

问题描述

使用 OpenShift 3.11,我安装了一个 nfs 持久卷,但应用程序无法复制到新卷中,说:

oc logs my-project-77858bc694-6kbm6 
cp: cannot create regular file '/config/dbdata/resdb.lock.db': Permission denied
...

我试图通过在 InitContainers 中执行 chown 来更改文件夹的所有权,但它告诉我该操作不允许。

      initContainers:
        - name: chowner
          image:  alpine:latest
          command: ["/bin/sh", "-c"]
          args:
            - ls -alt /config/dbdata; chown 1001:1001 /config/dbdata;
          volumeMounts:
          - name: my-volume
            mountPath: /config/dbdata/ 
oc logs my-project-77858bc694-6kbm6 -c chowner
total 12
drwxr-xr-x    3 root     root          4096 Nov  7 03:06 ..
drwxr-xr-x    2 99       99            4096 Nov  7 02:26 .
chown: /config/dbdata: Operation not permitted

我希望能够写入已安装的卷。

标签: kubernetesopenshift

解决方案


fsGroup: GROUP_ID您可以通过在安全上下文中使用来授予 Pod 写入卷的权限。fsGroup使您的卷可按 GROUP_ID 写入,并使容器内的所有进程成为该组的一部分。

例如:

apiVersion: v1
kind: Pod
metadata:
  name: POD_NAME
spec:
  securityContext:
    fsGroup: GROUP_ID
...

推荐阅读