轉接上文:部署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