참고문서
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 옵션에 대해 알아보자