部署k8s监控(1.2):Prometheus-operator配置持久化方案

转接上文:部署k8s监控(1):Prometheus-operator监控k8s集群的各个组件及pod(二进制环境)
解决上一篇博客遗留的问题:
产生的数据如何做到持久化

prometheus默认的存储方式 (- emptyDir: {})

它的生命周期和pod的生命周期一样,重启pod后数据会丢失,因此需要修改持久化方案保存数据
持久化方案后很会:
这里使用的是hostpath,也可以使用pv/pvc

一、进入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

二、在每台node节点中创建prometheus目录,并通过nfs挂载到远程的数据存储中心中(对应多个nfs存储)

也可以挂载到本地磁盘中,因情况而定

三、启动服务中,如果遇到以下报错可按照下方的进行修改

[prometheus-operator]报错caller=main.go:731 err=“opening storage failed: create dir: mkdir /prometheus/wal: permission denied”

  解决方案:
  [root@k8s-master1 /]# kubectl edit statefulset prometheus-k8s -n monitoring
      securityContext:
        fsGroup: 0
        runAsNonRoot: false
        runAsUser: 0

四、如果要做grafana的持久化存储也可以使用这种方法解决

  [root@k8s-master1 /]# kubectl edit deployment grafana -n monitoring  
      volumes:
      - hostPath:
          path: /prometheus
          type: Directory        name: grafana-storage

五、通过nfs挂载到远程的数据存储中心中(对应一个nfs存储)

六、修改用户权限

  [root@k8s-master1 /]# kubectl edit deployment grafana -n monitoring
      securityContext:
          runAsNonRoot: false
          runAsUser: 0

你可能感兴趣的:(K8S,docker,监控服务)