千寻

道路很长, 开始了就别停下!

0%

Pod has unbound immediate PersistentVolumeClaims,statefulset挂载不上pv的另一种情况

大家都知道当volumeClaimTemplates匹配不上pv时,会出现statefulset挂载不到pv的问题。错误提示如下:

1
error while running "VolumeBinding" filter plugin for pod "web-2": pod has unbound immediate PersistentVolumeClaims

如果你反复确认了volumeClaimTemplates是正确的,但是始终挂载不上,可以尝试检查以下pvc,看是不是statefulset之前自动创建的错误的pvc没有删除,导致后面statefulset的yaml文件怎么更改也没生效(刷新pvc)。

这种错误产生步骤如下:

  1. 创建一个1G的pv

  2. 创建了一个statefulset,但是要求的pv容量为2G

  3. 发现statefulset的yaml文件写错了,改成1G,kubectl delete statefulset xx,然后使用新的yaml

  4. 然后就发现statefulset的pod无论如何都成为了pending状态

  5. 原因就在于第三步删除statefulset的时候,自动创建的pvc没有删除,后面使用新的statefulset,pvc并不会自动刷新

  6. 可以使用命令kubectl get pvc 错误的pvc -o yaml查看这个pvc的创建yaml文档

  7. 可以使用命令kubectl describe pvc xxx –namespace xxx 查看具体错误信息

  8. kubectl delete -f xxx.yml 时不会自动删除volumeClaimTemplates 创建的错误pvc.
    需要手动删除kubectls delete pvc pvcname –namespace=kafka