转接上文:部署k8s监控(1):Prometheus-operator监控k8s集群的各个组件及pod(二进制环境)
解决上一篇博客遗留的问题:
产生的数据如何作到持久化node
prometheus默认的存储方式 (- emptyDir: {})
它的生命周期和pod的生命周期同样,重启pod后数据会丢失,所以须要修改持久化方案保存数据
持久化方案后很会:
这里使用的是hostpath,也可使用pv/pvcspa
1、进入prometheus-k8s的statefulset中修改挂载文件的类型
[root@k8s-master1 /]# kubectl edit statefulset prometheus-k8s -n monitoring volumes: - name: config secret: defaultMode: 420 secretName: prometheus-k8s - hostPath: #修改成volume卷的形式 path: /prometheus/config-out #挂载的位置 type: Directory #挂载的类型 name: config-out - configMap: defaultMode: 420 name: prometheus-k8s-rulefiles-0 name: prometheus-k8s-rulefiles-0 - hostPath: #修改成volume卷的形式 path: /prometheus/prometheus-k8s-db #挂载的位置 type: Directory #挂载的类型 name: prometheus-k8s-db
2、在每台node节点中建立prometheus目录,并经过nfs挂载到远程的数据存储中心中(对应多个nfs存储)
也能够挂载到本地磁盘中,因状况而定.net
3、启动服务中,若是遇到如下报错可按照下方的进行修改
[prometheus-operator]报错caller=main.go:731 err=“opening storage failed: create dir: mkdir /prometheus/wal: permission denied”code
解决方案: [root@k8s-master1 /]# kubectl edit statefulset prometheus-k8s -n monitoring securityContext: fsGroup: 0 runAsNonRoot: false runAsUser: 0
4、若是要作grafana的持久化存储也可使用这种方法解决
[root@k8s-master1 /]# kubectl edit deployment grafana -n monitoring volumes: - hostPath: path: /prometheus type: Directory name: grafana-storage
5、经过nfs挂载到远程的数据存储中心中(对应一个nfs存储)
6、修改用户权限
[root@k8s-master1 /]# kubectl edit deployment grafana -n monitoring securityContext: runAsNonRoot: false runAsUser: 0