美文网首页
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