prometheus rule을 crd로 설정
#설정파일
apiVersion: monitoring.coreos.com/v1 #prometheus crd 이름
kind: PrometheusRule #kind
metadata:
name: control-node-disk-usage
namespace: monitoring
labels:
release: kube-prometheus-stack #라벨추가
spec:
groups:
- name: node.rules
rules:
- alert: control plane disk usage high
expr: |
(
1 -
node_filesystem_avail_bytes{instance="20.0.0.2:9100",mountpoint="/",fstype!~"tmpfs|overlay|squashfs"}
/
node_filesystem_size_bytes{instance="20.0.0.2:9100",mountpoint="/",fstype!~"tmpfs|overlay|squashfs"}
) > 0.8
for: 5m
labels:
severity: warning
instance: 20.0.0.2
annotations:
summary: "control node disk usage > 80%"
description: "Node {{ $labels.instance }} root filesystem usage is above 80%"
#쿠버네티스에 crd생성
kubectl apply -f control-plane-disk.yaml
#rule이 생성 되었는지 확인
kubectl get prometheusrules -n monitoring
NAME AGE
control-node-disk-usage 5h32m
kube-prometheus-stack-alertmanager.rules 19h
kube-prometheus-stack-config-reloaders 19h
kube-prometheus-stack-etcd 19h
kube-prometheus-stack-general.rules 19h
kube-prometheus-stack-k8s.rules.container-cpu-usage-seconds-tot 19h
프로메테우스 deployment 재시작
#rollout
kubectl rollout restart deploy -n monitoring kube-prometheus-stack-operator
#status 확인
kubectl rollout statusdeploy -n monitoring kube-prometheus-stack-operator
프로메테우스 ui에서 rule이 추가되었는지 확인

.ps
실제로는 crd로 설정을 하였을때 node_exporter가
pod으로 노드에서 실행되고 있어서 디스크 압박
테스트 진행시 가장 먼저 node_exporter가
evicted되는 현상이 발생하여
node_exporter로부터 metric을
가져올수 없어서 위와 같은 방법으로는 특정 노드의
디스크 사용량을 추적하는데 어려움이 있었음
node_exporter를 직접 설치하였다면
kubernetes에 의해서 정지될 일이
없었을 것이므로, 위의 쿼리문으로
특정 노드의 디스크 사용량
추적이 가능하였을 것으로 보임
(CRD를 사용하지 않고 직접, prometheus 설정파일을 수정)
'ops > kubernetes' 카테고리의 다른 글
| 워커노드의 disk-usage에 따라 alert발생 시키기 - 3(alert 설정) (0) | 2026.01.12 |
|---|---|
| 쿠버네티스가 클러스터의 노드에 taints를 적용하는 기준 (1) | 2026.01.12 |
| 워커노드의 disk-usage에 따라 alert발생 시키기 - 1(쿼리문) (0) | 2026.01.12 |
| ingress로 traefik 설정하기 (0) | 2026.01.12 |
| 워커노드에 node exporter 설치하기 (0) | 2026.01.11 |