大家都知道当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)。
这种错误产生步骤如下:
创建一个1G的pv
创建了一个statefulset,但是要求的pv容量为2G
发现statefulset的yaml文件写错了,改成1G,kubectl delete statefulset xx,然后使用新的yaml
然后就发现statefulset的pod无论如何都成为了pending状态
原因就在于第三步删除statefulset的时候,自动创建的pvc没有删除,后面使用新的statefulset,pvc并不会自动刷新
可以使用命令kubectl get pvc 错误的pvc -o yaml查看这个pvc的创建yaml文档
可以使用命令kubectl describe pvc xxx –namespace xxx 查看具体错误信息
kubectl delete -f xxx.yml 时不会自动删除volumeClaimTemplates 创建的错误pvc.
需要手动删除kubectls delete pvc pvcname –namespace=kafka