K8S中pod在挂载volume时出现FailedMount错误(exit status 32)

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/wangtaoking1/article/details/50479390

问题

先是在k8s中开启了一个persistentvolume和persistentvolumeclaim,后端挂载NFS,然后在和volume相同的namespace中启动一个pod挂载前面的persistentvolumeclaim。发现pod一直处于containercreating状态,使用describe查看pod的详细错误信息,提示在挂载volume时出现FailedMount错误,exit status 32。具体错误信息如下:

Events:
  FirstSeen LastSeen    Count   From            SubobjectPath   Reason      Message
  ───────── ────────    ─────   ────            ─────────────   ──────      ───────
  20s       20s     1   {scheduler }        Scheduled   Successfully assigned testpod to 192.168.0.10
  4s        4s      1   {kubelet 192.168.0.10}          FailedMount Unable to mount volumes for pod "testpod_default": exit status 32
  4s        4s      1   {kubelet 192.168.0.10}          FailedSync  Error syncing pod, skipping: exit status 32

解决方法

首先,要想成功挂载nfs,必须在kubernetes集群的每个node上安装nfs-common。

然后,在创建persistentvolume和persistentvolumeclaim时他们的name必须相同,而且和pod中的spec.containers.volumeMounts.name以及spec.volumes.name,spec.volumes.persistentVolumeClaim.claimName全都相同,此时才能成功挂载,启动Pod。

经过以上两步,应该就能顺利解决问题了。这不知道算不算是k8s的一个bug,碰到问题在网上找了各种方案都不行,最后自己经过多次尝试,终于解决了。希望分享出来能够帮助到其他人。

—————后续更新————
搭建了一个新的k8s集群,又碰到了这个问题,挂载卷失败。上面的解决方案也试过了,还是不行。本以为是使用了新版的kubernetes的原因,在网上到处查找解决方法都不行,最后发现是没有将NFS服务器挂载到管理平台本地目录中导致了错误,真是太傻逼了。

猜你喜欢

转载自blog.csdn.net/wangtaoking1/article/details/50479390