美文网首页
kube-prometheus中grafana在k8s环境下持久

kube-prometheus中grafana在k8s环境下持久

作者: kencool | 来源:发表于2021-01-12 10:48 被阅读0次

    kube-prometheus的现状

    大家知道prometheus已经成为k8s云原生体系越来越倚重的监控告警系统,prometheus虽然监控功能在云原生体系下有相当大的优势,但是其部署组件较多,又颇为复杂,这时候,kube-prometheus的全家桶功能给大家解决了部署上的难题,覆盖了常用的监控组件、告警组件及监控模版;但也有很多东西需要我们进一步完善,例如告警模板的自定义、监控数据的持久化存储、grafana模版和数据的持久化存储、阈值的调整等等;目前我们先说说grafana持久化。

    grafana持久化

    grafana作为kube-prometheus全家桶中的一员,对于数据的可视化展示提供了帮助,但其并没有实现持久化的存储,这样带来的后果是,你如果想安装一个pannel,或者重启了grafana,如果没有备份的话,就会导致你所有的模版数据随着pod的销毁而功亏一篑,因为我们的k8s是托管在腾讯云,所以以腾讯云k8s为例,解决这个持久化问题。

    动态存储供应storageclass

    讲到持久化,很多人会习惯用PV/PVC,创建一个pv,再定义并绑定pvc,再pod挂载,如果你有很多项目需要持久存储的话,就会需要创建很多个pv,这时候storageclass就出来,它提供一种自动创建PV的机制,相当于pv的模板,腾讯云提供了默认的存储插件,下面看示例:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: k8s-grafana
    provisioner: cloud.tencent.com/qcloud-cbs
    parameters:
      paymode: POSTPAID
      type: CLOUD_PREMIUM
      zone: "200004"
    
    • provisioner为腾讯云提供的存储插件,我选择的是云硬盘
    • paymode: POSTPAID 按量计费
    • zone: 用于指定可用区

    PVC

    PVC是用来描述希望使用什么样的或者说是满足什么条件的存储,它的全称是Persistent Volume Claim,也就是持久化存储声明

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: k8s-grafana-claim
      namespace: monitoring
      annotations:
        volume.beta.kubernetes.io/storage-class: "k8s-grafana"
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 100Gi
    

    注意:volume.beta.kubernetes.io/storage-class要保持和第一步storageclass的名字一致,这样才能绑定上
    其它的访问模式和资源申请就不用多说了

    pod中如何使用

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: grafana
      name: grafana
      namespace: monitoring
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: grafana
      template:
        metadata:
          labels:
            app: grafana
        spec:
          containers:
          - image: grafana/grafana:6.4.3
            name: grafana
            ports:
            - containerPort: 3000
              name: http
            volumeMounts:
            - mountPath: /var/lib/grafana:Z
              name: grafana-storage
              readOnly: false
          - name: grafana-storage
            persistentVolumeClaim:
              claimName: k8s-grafana-claim
    

    persistentVolumeClaim的名字要跟上面建的pvc相关联。
    kubectl apply -f grafana-deployment.yaml应用后,添加几个模板上次测试一下,发现已经不会丢数据了

    相关文章

      网友评论

          本文标题:kube-prometheus中grafana在k8s环境下持久

          本文链接:https://www.haomeiwen.com/subject/gqssaktx.html