En el host, todo en el directorio montado ( /opt/testpod ) es propiedad de uid=0 gid=0. Necesito que esos archivos sean propiedad de lo que decida el contenedor, es decir, un gid diferente, para poder escribir allí. Recursos con los que estoy probando:
--- apiVersion: v1 kind: PersistentVolume metadata: name: pv labels: name: pv spec: storageClassName: manual capacity: storage: 10Mi accessModes: - ReadWriteOnce hostPath: path: "/opt/testpod" --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc spec: storageClassName: manual selector: matchLabels: name: pv accessModes: - ReadWriteOnce resources: requests: storage: 10Mi --- apiVersion: v1 kind: Pod metadata: name: testpod spec: nodeSelector: foo: bar securityContext: runAsUser: 500 runAsGroup: 500 fsGroup: 500 volumes: - name: vol persistentVolumeClaim: claimName: pvc containers: - name: testpod image: busybox command: [ "sh", "-c", "sleep 1h" ] volumeMounts: - name: vol mountPath: /data Una vez que el pod se está ejecutando, kubectl exec en él y ls -la /data muestra todo lo que aún es propiedad de gid=0. De acuerdo con algunos documentos de Kuber, se supone que fsGroup todo en el inicio del módulo, pero no sucede. ¿Qué estoy haciendo mal, por favor?
El hostpath tipo de ruta de host no es compatible con el contexto de seguridad. Tienes que ser root para que se escriba el volumen. Se describe bien en este problema de github y en este documento sobre hostPath :
Los directorios creados en los hosts subyacentes solo pueden ser escritos por root. Debe ejecutar su proceso como root en un contenedor privilegiado o modificar los permisos de archivo en el host para poder escribir en un volumen
hostPath
También puede consultar esta solicitud de github que describe por qué es peligroso cambiar el permiso del directorio del host.
La gente de solución describe que parece estar funcionando es otorgar a su usuario privilegios de sudo, pero eso en realidad hace que la idea de ejecutar el contenedor como usuario no root sea inútil.
El contexto de seguridad parece estar funcionando bien con el volumen de dirección vacía (bien descrito en los documentos de k8s aquí )