Estou montando um caminho do sistema de arquivos NFS nos pods do cluster kubernetes (v1.18) no CentOS 8 (o nfs está instalado no Fedora 32), este é o meu pv yaml define:
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-jenkins-pv
namespace: infrastrcuture
spec:
capacity:
storage: 8Gi
accessModes:
- ReadWriteOnce
mountOptions:
- vers=4.0
- noresvport
nfs:
server: "192.168.31.2"
path: "/home/dolphin/data/k8s/monitoring/infrastructure/jenkins"
persistentVolumeReclaimPolicy: Retain
e quando eu inicio o pod, ele mostra este erro:
MountVolume.SetUp failed for volume "nfs-jenkins-pv" : mount failed: exit status 32 Mounting command: systemd-run Mounting arguments: --description=Kubernetes transient mount for /var/lib/kubelet/pods/656dacd8-fcc9-44f1-a0c8-baa7eb5fa82e/volumes/kubernetes.io~nfs/nfs-jenkins-pv --scope -- mount -t nfs -o noresvport,vers=4.0 192.168.31.2:/home/dolphin/data/k8s/monitoring/infrastructure/jenkins /var/lib/kubelet/pods/656dacd8-fcc9-44f1-a0c8-baa7eb5fa82e/volumes/kubernetes.io~nfs/nfs-jenkins-pv Output: Running scope as unit: run-r5dc1ce59823746ffbbb18381cbec71cc.scope mount.nfs: Operation not permitted
Estou tentado alterar o privilégio da pasta jenkins assim:
chmod 777 jenkins
mas ainda não funciona. Eu poderia montar o sistema de arquivos nfs da máquina local usando a linha de comando com root assim:
sudo mount -t nfs -o v3 192.168.31.2:/home/dolphin/data/k8s/monitoring/infrastructure/jenkins /mnt
mas no cluster kuberentes ele sempre é usuário root e root não é uma boa prática e pode causar problemas de segurança. Eu ajustei o arquivo de exportação /etc/exports
assim:
[dolphin@MiWiFi-R4CM-srv infrastructure]$ cat /etc/exports
/home/dolphin/data/k8s/monitoring/infrastructure/jenkins *(rw,no_root_squash)
o que devo fazer para que alguém possa montar o sistema de arquivos nfs? talvez evite usar o usuário root.
use nfsv3 funciona:
ou usando nfsv4, o arquivo deve escrever assim:
e defina o
/etc/exports
arquivo assim: