prometheus数据持久化

1.定义一个storageclass

[root@master01 ~]# cat prometheus-storageclass.yaml 
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: prometheus-data-db
provisioner: qgg-nfs-storage   #### 我这边是NFS做的存储,provisioner名称,请确保该名称与 nfs-StorageClass.yaml文件中的provisioner名称保持一致

2.定义一个pvc

[root@master01 ~]# cat prometheus-data-db.yaml 
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: prometheus-data-db
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
  storageClassName: prometheus-data-db
[root@master01 ~]# kubectl get pvc -n monitoring 
NAME                                 STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS         AGE
prometheus-k8s-db-prometheus-k8s-0   Bound    pvc-4c8f9a58-1fcd-4bf9-98e6-3fc016bdde1f   1Gi        RWO            prometheus-data-db   2d21h
prometheus-k8s-db-prometheus-k8s-1   Bound    pvc-b00f8bf2-1a28-4c75-bbd9-62e6f3f97a8f   1Gi        RWO            prometheus-data-db   2d21h

3.prometheus文件修改

[root@master01 manifests]# cat prometheus-prometheus.yaml 
  1 apiVersion: monitoring.coreos.com/v1
  2 kind: Prometheus
  3 metadata:
  4   labels:
  5     prometheus: k8s
  6   name: k8s
  7   namespace: monitoring
  8 spec:
  9   retention: 7d ### 数据保留时间
 10   alerting:
 11     alertmanagers:
 12     - name: alertmanager-main
 13       namespace: monitoring
 14       port: web
 15   storage:   # 数据持久化
 16     volumeClaimTemplate:
 17       spec:
 18         storageClassName: prometheus-data-db
 19         resources:
 20           requests:
 21             storage: 1Gi
# 说了prometheus operator持久化的问题,但是还有一个问题很多人都忽略了,那就是prometheus operator数据保留天数,根据官方文档的说明,默认prometheus operator数据存储的时间为1d,这个时候无论你prometheus operator如何进行持久化,都没有作用,因为数据只保留了1天,那么你是无法看到更多天数的数据

4.测试

[root@master01 manifests]# kubectl delete pod -n monitoring  prometheus-k8s-0
pod "prometheus-k8s-0" deleted
[root@master01 manifests]# kubectl delete pod -n monitoring  prometheus-k8s-1
pod "prometheus-k8s-1" deleted
[root@master01 manifests]# kubectl get pod -n monitoring 
NAME                                   READY   STATUS    RESTARTS   AGE
prometheus-k8s-0                       2/2     Running   1          63s
prometheus-k8s-1                       2/2     Running   1          54s


原文地址:https://www.cnblogs.com/Applogize/p/15001030.html