Persistent Volume
kube-prometheus는 초기에 설치하면 데이터를 emptyDir에 저장합니다. 이는 Prometheus가 재시작되면 데이터가 삭제되는 것을 의미합니다. 이를 방지하기 위해 persistent volume을 사용할 수 있습니다.
기본적으로 1일치의 데이터를 보관합니다.
retention 설정
https://github.com/prometheus-operator/kube-prometheus/blob/main/examples/prometheus-pvc.jsonnet 를 참고하였습니다.

설정을 추가합니다.
이렇게 되면 30일의 데이터를 로컬 호스트에 저장을 합니다.
데이터가 많아져서 노드에 스페이스가 없으면 문제가 생길수 있습니다.
이제 이걸 nfs에 pv에 저장해봅니다.
pv사용
기본적으로 kube-prometheus가 pvc는 생성을 합니다. 이걸 pvc와 붙일때는 label을 이용합니다
일단 pv가 2개가 있어야합니다. 꼭 storageclass도 사용하여야 합니다.
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-prom-01
labels:
app: prometheus
spec:
capacity:
storage: 50Gi
accessModes:
- ReadWriteMany
storageClassName: 'nfs'
persistentVolumeReclaimPolicy: Retain
nfs:
server: filer1
path: /vol/sharedvol/prom-c4-01
readOnly: false
mountOptions:
- nfsvers=3
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-prom-02
labels:
app: prometheus
spec:
capacity:
storage: 50Gi
accessModes:
- ReadWriteMany
storageClassName: 'nfs'
persistentVolumeReclaimPolicy: Retain
nfs:
server: filer1
path: /vol/sharedvol/prom-c4-02
readOnly: false
mountOptions:
- nfsvers=3
2개의 pv를 생성하였습니다.
이제 cluster.jsonnet을 수정합니다.

이렇게 하면 pvc를 생성하고 pv를 사용하게 됩니다.
pod1과 pod2가 pvc를 연결해서 사용하는것을 알게 됩니다.
prometheus deployment replication이 2개 이상있으면 추가로 pv를 만들어주어야합니다.
selector: { matchLabels
을 사용함으로 꼭 label을 설정해야합니다.
Last updated
Was this helpful?