kube-prometheus环境下Grafana自定义仪表盘持久化方案咨询
解决kube-prometheus中Grafana自定义仪表盘重启丢失的问题
核心原因
kube-prometheus中的Grafana默认通过ConfigMap或Sidecar加载预置仪表盘,而通过GUI导入的自定义仪表盘会存在Grafana内置的sqlite数据库中。如果只配置了默认仪表盘的PV/PVC,未正确持久化Grafana的核心数据存储目录,Pod重启后sqlite数据丢失,自定义仪表盘就会消失。
具体解决思路
1. 修正Grafana数据目录的持久化配置
Grafana默认数据存储路径为/var/lib/grafana,需要将该路径挂载到已创建的PVC上:
- 编辑Grafana的Deployment,添加对应挂载配置:
spec: template: spec: containers: - name: grafana volumeMounts: - name: grafana-data mountPath: /var/lib/grafana volumes: - name: grafana-data persistentVolumeClaim: claimName: 你的PVC名称 - 确认PVC已正确绑定PV,存储类配置符合集群要求。
2. 用配置化方式管理自定义仪表盘(推荐)
kube-prometheus推荐通过Sidecar模式,用ConfigMap管理自定义仪表盘,避免依赖Pod本地存储:
- 将自定义仪表盘的JSON文件转为ConfigMap,并添加识别标签:
kubectl create configmap custom-grafana-dashboards --from-file=./dashboard1.json --from-file=./dashboard2.json -n monitoring kubectl label configmap custom-grafana-dashboards grafana_dashboard=1 -n monitoring - kube-prometheus默认配置的Grafana Sidecar会自动扫描带有
grafana_dashboard: "1"标签的ConfigMap,自动导入仪表盘,无需手动操作。
3. 验证持久化生效状态
重启Grafana Pod后,执行命令检查挂载状态:
kubectl exec -it <grafana-pod-name> -n monitoring -- df -h /var/lib/grafana
若输出显示挂载路径为你的PV存储路径,说明持久化配置生效;若为容器临时存储路径,需检查Deployment的挂载配置是否有误。
内容的提问来源于stack exchange,提问作者Giorgio Tarozzi
相关产品推荐
相关产品推荐

