Kubernetes 无法写入文件。作为根目录装入的卷

Kubernetes 无法写入文件。作为根目录装入的卷,kubernetes,kubernetes-pvc,Kubernetes,Kubernetes Pvc,我正在旋转一个Pod(附带非Root用户),它需要将数据写入卷。该卷来自PVC pod的定义很简单 kind: Pod apiVersion: v1 metadata: name: task-pv-pod spec: volumes: - name: task-pv-storage persistentVolumeClaim: claimName: test-pvc containers: - name: task-pv-container

我正在旋转一个Pod(附带非Root用户),它需要将数据写入卷。该卷来自PVC

pod的定义很简单

kind: Pod
apiVersion: v1
metadata:
  name: task-pv-pod
spec:
  volumes:
    - name: task-pv-storage
      persistentVolumeClaim:
       claimName: test-pvc
  containers:
    - name: task-pv-container
      image: jnlp/jenkins-slave:latest
      command: ["/bin/bash"]
      args: ["-c", "sleep 500"]
      ports:
        - containerPort: 80
          name: "http-server"
      volumeMounts:
        - mountPath: "/usr/share/nginx/html"
          name: task-pv-storage
当我
exec
进入Pod并尝试写入
/usr/share/nginx/html

我明白了

查看目录的权限

jenkins@task-pv-pod:~$ ls -ld /usr/share/nginx/html
drwxr-xr-x 3 root root 4096 Mar 29 15:52 /usr/share/nginx/html
很明显,只有root用户才能写入
/usr/share/nginx/html
,但这不是我想要的


有没有办法改变安装卷的权限?

您可以考虑使用<强> ItItCuult来安装卷和更改权限。initContainer将在主容器启动之前运行。这种用法的通常模式是使用busybox映像(~22MB)装载卷并在目录上运行chown或chmod。当pod的主容器运行时,卷将具有正确的所有权/访问权限

可选地,您可以考虑使用IntCube注入适当的文件,如

中所示。
希望这有帮助

安全上下文定义Pod或容器的权限和访问控制设置。试试看:


只需对
spec
下的
securityContext
和容器下的
securityContext
使用相同的
fsGroup
。然后,您应该能够拥有写访问权限。
jenkins@task-pv-pod:~$ ls -ld /usr/share/nginx/html
drwxr-xr-x 3 root root 4096 Mar 29 15:52 /usr/share/nginx/html
kind: Pod
apiVersion: v1
metadata:
  name: task-pv-pod
spec:
  securityContext:
    fsGroup: $jenkins_uid
  volumes:
    - name: task-pv-storage
      persistentVolumeClaim:
       claimName: test-pvc
...