프로메테우스 오퍼레이터 PV, retention 값 설정

DevOps Engineer·2022년 10월 11일
0

참고문서
https://github.com/prometheus-operator/kube-prometheus/issues/840
https://github.com/prometheus-operator/prometheus-operator/blob/22aaf848a27f6e45702131e22a596778686068d5/Documentation/api.md#prometheusspec

git clone https://github.com/prometheus-operator/kube-prometheus.git

cd kube-prometheus
kubectl apply -f ./manifests/setup
kubectl apply -f ./manifests

default로 일단 설치를 쭉 해보자

처음에 오퍼레이터를 설치하면 retention(24h), PV값이 따로 설정되지않고 컨테이너 내부에 데이터가 쌓이게 된다.
이와 관련된 한글로 작성된 글이 없어 끄적여봅니다.

자 이제 수정을 해야하는데

manifests폴더에 파일 중 prometheus-prometheus.yaml 파일을 보면
값이 몇개가 없다. -> default로 잡혀서 설치됨을 의미.

apiVersion: monitoring.coreos.com/v1
kind: Prometheus
metadata:
  labels:
    app.kubernetes.io/component: prometheus
    app.kubernetes.io/instance: k8s
    app.kubernetes.io/name: prometheus
    app.kubernetes.io/part-of: kube-prometheus
    app.kubernetes.io/version: 2.38.0
  name: k8s
  namespace: monitoring
spec:
  alerting:
    alertmanagers:
    - apiVersion: v2
      name: alertmanager-main
      namespace: monitoring
      port: web
  enableFeatures: []
  externalLabels: {}
  image: quay.io/prometheus/prometheus:v2.38.0
  nodeSelector:
    kubernetes.io/os: linux
  podMetadata:
    labels:
      app.kubernetes.io/component: prometheus
      app.kubernetes.io/instance: k8s
      app.kubernetes.io/name: prometheus
      app.kubernetes.io/part-of: kube-prometheus
      app.kubernetes.io/version: 2.38.0
  podMonitorNamespaceSelector: {}
  podMonitorSelector: {}
  probeNamespaceSelector: {}
  probeSelector: {}
  replicas: 2
  resources:
    requests:
      memory: 400Mi
  ruleNamespaceSelector: {}
  ruleSelector: {}
  securityContext:
    fsGroup: 2000
    runAsNonRoot: true
    runAsUser: 1000
  serviceAccountName: prometheus-k8s
  serviceMonitorNamespaceSelector: {}
  serviceMonitorSelector: {}
  version: 2.38.0

이런 형태일텐데
이 yaml 의 spec 이하에 옵션을 추가해주면 된다. 추가가능한 옵션의 경우 위 참고문서를 참고바란다.

retention: '10y'
storage:
  volumeClaimTemplate:
    spec:
      resources:
        requests:
          storage: 20Gi
      storageClassName: local-storage

버전 밑에 위와 같이 PVC, retention 설정을 맞춰주고
PV를 세팅한다.

apiVersion: v1
kind: PersistentVolume
metadata:
  name: prometheus-pv-0
  namespace: monitoring
  labels:
    type: local
    app: prometheus
spec:
  capacity:
    storage: 100Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: local-storage
  local:
    path: /path/prometheus

이 때 path 경로에 폴더가 제대로 만들어져있지않는 경우 statefulset 생성 시 컨테이너가 제대로 생성이 안된다.

노드를 지정하고 싶은 경우 nodeAffinity 옵션에 대해 알아보자

profile
madame의 Techblog

0개의 댓글