기존 configmap을 수정하여 적용하는 방식 대신 prometheus operater가 설치되어있으니 prometheusRule을 적용하는 방식 사용
프로메테우스가 rule을 인식하기 위해 프로메테우스 crd를 수정하여 ruleNamespaceSelector에 matchLabels 추가
[root@ip-172-31-46-129: ~/Node-K8s/develop/horizontal-pod-autoscalers]$ kubectl get namespace bank-namespace --show-labels
NAME STATUS AGE LABELS
bank-namespace Active 2d16h istio-injection=enabled,kubernetes.io/metadata.name=bank-namespace
spec:
ruleNamespaceSelector:
matchLabels:
kubernetes.io/metadata.name: bank-namespace # bank-namespace의 기존 라벨을 사용
ruleSelector:
matchLabels:
release: kube-prometheus-stack-1727853607
rule을 작성한 후 apply하면 프로메테우스 ui에서 확인 가능
프로메테우스 ui와 hpa describe했을때 간헐적으로 unknown 뜨는 현상
Metrics: ( current / targe
t )
"frontend_cpu_usage_percentage" on Service/frontend-server (target average value): <unknown> / 300m
"frontend_memory_usage_percentage" on Service/frontend-server (target average value): 163m / 750m
"frontend_requests_per_second" on Service/frontend-server (target value): 0 / 30
"frontend_network_traffic" on Service/frontend-server (target average value): <unknown> / 500k
프로메테우스 설정 파일에서 crape_interval(Prometheus가 대상에서 메트릭을 수집하는 간격), evaluation_interval(수집한 데이터를 기반으로 평가(알람 규칙, HPA 등)를 실행하는 간격)를 30s에서 15s로 변경하여 해결
참고한 문서 : https://tech.scatterlab.co.kr/kubernetes-hpa-custom-metric/