pod报错 pod has unbound PersistentVolumeClaims.
1. 背景
部署Grafana的时候 pod报错 pod has unbound PersistentVolumeClaims.
2. 原因分析
情况1.查看了grafana-data-pvc.yaml文件,发现storageClassName 取数为空,当storageClassName为空的时候如果没有指定DefaultStorageClass ,那么是不会分配 pv给 grafana-data的。
情况2.查看了grafana-data-pvc.yaml文件,发现storageClassName 取数正常,执行kubectl get sc命令发现没有部署pv,部署NFS动态存储即可。
3. 说明一下DefaultStorageClass
PVC和PV的绑定是通过StorageClassName进行的。然而如果定义PVC时没有指定StorageClassName呢?这取决与admission插件是否开启了DefaultDefaultStorageClass功能:
如果DefaultDefaultStorageClass功能开启,那么此PVC的StorageClassName就会被指定为DefaultStorageClass。DefaultStorageClass从何处而来呢?原来在定义StorageClass时,可以在Annotation中添加一个键值对:storageclass.kubernetes.io/is-default-class: true,那么此StorageClass就变成默认的StorageClass了。
如果DefaultDefaultStorageClass功能没有开启,那么没有指定StorageClassName的PVC只能被绑定到同样没有指定StorageClassName的PV。
查看了我们环境中的storageclass 定义,发现没有开启DefaultDefaultStorageClass功能。
4. 解决办法
修改chart 文件中的pvc 取值, 让storageClass=现有的storageclass name
创建storageClass(依据class.yaml 和 deployment.yaml )
[root@k8s-master01 cat grafana-data-pvc.yaml
过一会儿再次查看pod状态 ,已经running
[root@k8s-master01 kubectl get pod -n monitoring
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?