호돌찌의 AI 연구소
article thumbnail

 

Prerequisites는 k8s환경에서 minikube v1.22.0, helm binary는 helm v3 에서 설치할 예정입니다. 

 

1. install

minikube부터 실행합니다. 

minikube start --driver=docker --cpus='4' --memory='4g'

1) 그 이후 kube-prometheus-stack Helm Repo 추가를 합니다. 이는 Prometheus, Grafana 등을 k8s에 쉽게 설치하고 사용할 수 있도록 패키징 된 Helm 차트입니다. 

https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack

 

GitHub - prometheus-community/helm-charts: Prometheus community Helm charts

Prometheus community Helm charts. Contribute to prometheus-community/helm-charts development by creating an account on GitHub.

github.com

 

# helm repo 추가
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts

# helm repo update
helm repo update

 

2) kube-prometheus-stack 을 인스톨합니다. 

일단 모든 values.yaml은 default로 생성하는 것이 여기 글의 예시입니다. 하지만 실무에서는 admin password, storage class, resource, ingress 등의 value를 수정한 뒤 적용하는 경우라면, charts를 clone 한 뒤, values.yaml을 수정하여 git 으로 환경별 히스토리 관리해야 합니다. 

 

 

GitHub - prometheus-community/helm-charts: Prometheus community Helm charts

Prometheus community Helm charts. Contribute to prometheus-community/helm-charts development by creating an account on GitHub.

github.com

# helm install [RELEASE_NAME] prometheus-community/kube-prometheus-stack
helm install prom-stack prometheus-community/kube-prometheus-stack

# 정상 설치 확인
# 최초 설치 시 docker image pull 로 인해 수 분의 시간이 소요될 수 있음
kubectl get pod -w

pod가 뜨는 것이 좀 걸린다. 
다양한 서비스가 있는 것을 알 수 있다. 

2. 사용 방법

사용방법은 새로운 터미널을 열어서 Port를 포워딩해서 합니다. 

- Grafana 서비스

kubectl port-forward svc/prom-stack-grafana 9000:80

- Prometheus 서비스

kubectl port-forward svc/prom-stack-kube-prometheus-prometheus 9091:9090

터미널 2개 켜서 포워딩시킨다.

 

 

 

 

 

 

 

 

3. Prometheus

localhost:9091로 접속합니다. 다양한 PromQL 이 사용이 가능합니다. 

처음 접속하면 이렇게 생겼음

 

아래 그림은 "container_memory_usage_bytes"로 container 별 memory 사용 현황 출력을 합니다. 이외에 수많은 PromQL들 조회가 가능하며, 검색창에는 자동완성을 제공해줍니다.

몇분 전에 실행한 Pod들 memory들을 볼 수 있다. 

 

 

또한 다양한 AlterRule 이 Default로 생성되어있습니다.

초록색 하나하나가 AlterRule임

expression 이 PromQL 을 기반으로 정의되어 있고, 해당 AlertRule 이 발생하면 어디로 어떤 message를 보낼 것인지도 정의할 수 있습니다. 

 

 

 

4. Grafana

localhost:9000으로 접속하며, 관리자 ID / Pwd는 admin / prom-operator 입니다. 아래 명령어로 조회가 가능합니다.

kubectl get secret --namespace default prom-stack-grafana -o jsonpath="{.data.admin-user}" | base64 --decode ; echo

kubectl get secret --namespace default prom-stack-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo

좌측 Data Sources 탭을 클릭하면 Prometheus 가 Default로 등록되어있습니다. 

왼쪽에 data sources 탭 클릭함

이는 Prometheus 와 통신하는 URL 은 쿠버네티스 service의 DNS로 세팅되어 있고, Grafana와 Prometheus 모두 쿠버네티스 내부에서 통신하는 역할입니다.

 

이제는 좌측에 Dashboard 탭을 누릅니다. 다양한 대시보드가 default로 등록이 되어있습니다. 동그라미 친 대시보드 하나를 한번 누릅니다. 

 

namespace의 Pod들 대시보드를 확인할 수 있습니다. 그림은 last 1 hour인데, 이 부분을 줄였다 늘렸다 Time Range를 조절 가능합니다.

Pod별 사용량을 확인도 할 수 있습니다. 

 

 

우측 상단에 Add Panel(+ 그래프 모양)을 눌러서 대시보드의 Panel 추가 및 수정이 가능합니다. 

 

 

 

1번 버튼은 Save Dashboard이며, 이 부분의 내용을 json file을 2번 버튼 눌러서 저장하고 공유가 가능합니다. 

 

 

grafana.com 에서 다른 사람들이 업로드한 대시보드를 import 하여 json File을 업로드해서 사용 가능합니다. 

 

 

이제 여태까지 데이터 관리, 모델관리, 모델 서빙, 모델 모니터링 관련된 글을 조금씩 찍어먹어 보았습니다. 이제 절반 정도 글을 다루었습니다. 다음 글에서는 kubeflow 관련 글로 찾아뵙겠습니다.


https://bit.ly/37BpXiC

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

 

* 본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

 

 

 

 

 


profile

호돌찌의 AI 연구소

@hotorch's AI Labs

포스팅이 도움이 되셨다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!