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?