动态创建nfs的pvc失败问题排查

项目场景:

提示:Hadoop部署到k8s,需要在各个节点之间共享,而且各个节点都需要能编辑文件内容,所以需要支持ReadWriteMany的PersistentVolume,这里我选择使用NFS
使用NSF来存放配置文件,hadoop-config-nfs-pvc将挂载到所有的Hadoop集群中的POD中


问题描述:

创建动态pvc失败

External provisioner is provisioning volume for claim "hadoop/hadoop-config-nfs-pvc"
  Warning  ProvisioningFailed    100s (x6 over 9m25s)    cluster.local/nfs-client-provisioner_nfs-client-provisioner-68b846887c-7bvjw_0a464304-cd77-11eb-9000-8e6640c99276  failed to provision volume with StorageClass "nfs-client": unable to create directory to provision new pv: mkdir /persistentvolumes/hadoop-hadoop-config-nfs-pvc-pvc-ab7453e4-3d32-4ea1-8f75-71b6c1dab592: read-only file system


原因分析:

主要是以下报错:
mkdir /persistentvolumes/hadoop-hadoop-config-nfs-pvc-pvc-ab7453e4-3d32-4ea1-8f75-71b6c1dab592: read-only file system
1、查看nfs挂载 :showmount -e

Export list for k8s-master01:
/nfs               *

没有/persistentvolumes/
2、vim etc/exports加上挂载
3、在另一台机器上验证挂载并创建文件夹成功
mount -t nfs 192.168.2.167:/persistentvolumes /pers
mkdir aaa
4、重新创建pvc ,这时候还是报一样的错误。排查了很久。
终于发现重新创建deployment后,pvc创建成功。

[root@k8s-master01 hadoop-k8s]# kubectl get deployments
NAME                     READY   UP-TO-DATE   AVAILABLE   AGE
nfs-client-provisioner   1/1     1            1           215d


解决方案:

创建挂载目录,重新创建deployment。