动态创建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。