[PKOS] 쿠버네티스 실무실습 스터디 5주차 메모
5주차 주제는 모니터링임. 프로메테우스랑 그라파나를 다룬다.
[PKOS] 쿠버네티스 실무실습 스터디 5주차 메모
5주차 주제는 모니터링임. 프로메테우스랑 그라파나를 다룬다.
Prometheus는 SoundCloud에서 최초로 만들어진 오픈소스 모니터링, 알람 시스템이다.

- Local 또는 Remote의 TSDB (time series database)를 사용함.
- 수집대상은 정적 설정 또는 서비스 디스커버리를 사용함.
- pull 방식으로 동작함. (1)
Monitoring System — Push vs Pull
- push: 데이터를 가진 곳에서 필요한 곳으로 보냄. Nagios, Zabbix 등이 사용. 중앙에서 수집항목, 수집할 서버를 모두 관리한다. 에이전트가 수평적으로 쉽게 스케일링할 수 있으며 오토스케일링 상황에서 서버 목록을 관리할 필요가 없어서 유리함.
- pull: 데이터가 필요한 곳에서, 가진 곳에 접속하여 데이터를 가져간다. Prometheus, Datadog, collectd 등이 사용함. 데이터 완전성을 파악하기 쉬우며 push에 비하여 장애등의 예외 상황에 대응이 더 쉽다. 데이터 조회 인터페이스가 노출되어 보안을 주의해야됨.

이번 실습에서는 kube-prometheus-stack을 사용하는데, kube-prometheus-stack 은 Kubernetes manifests, Grafana dashboards, Prometheus rules 과 문서, 스크립트들을 한번에 제공하여 손쉽게 Prometheus Operator를 사용해서 Kubernetes cluster monitoring with Prometheus 을 가능하게 해준다.
다음 구성으로 배포가 이루어진다.
- Metric Server: kubelet으로부터 수집한 리소스 메트릭을 수집 및 집계하는 클러스터 애드온 구성 요소
- cAdvisor: kubelet에 포함된 컨테이너 메트릭을 수집, 집계, 노출하는 데몬

Grafana는 TSDB의 데이터를 조회, 시각화, 알림, 탐색해볼 수 있는 도구임. 이를 통해서 데이터를 좀 더 직관적으로 파악하고 인사이트를 얻을 수 있음.
시계열 데이터 (Time Series Data)는 시간에 따라 저장되는 데이터를 의미한다. 시간 경과에 따른 변화를 추적하는데 용이하다. 시계열 데이터베이스(Time Series, Database)는 시계열 데이터를 처리하기 위해 최적화된 데이터 베이스임. InfluxDB, Kdb+, Prometheus, Graphite 등이 있음.
사람들이 공유한 Grafana 대시보드들을 매우 쉽게 사용할 수 있음. 공홈의 Dashboards 에서 맘에 드는 대시보드를 찾아서 ID를 복사해서 Grafana의 Dashboard 메뉴에서 바로 import 할 수 있다. 데이터 소스는 Prometheus를 선택해서 사용하면 된다.


Grafana 공홈의 대시보드 목록과 상세 페이지

Grafana의 대시보드 가져오기
여담으로 실습을 할때 kops edit cluster 를 하고 update & rolling-update 를 하였을때 InstanceGroup의 상태 정보가 제대로 동기화되지 않아서 Instance들이 Detached상태로 보이고 kops validate cluster 가 계속 실패하는 문제가 있었는데, kubectl 로 node 등의 정보를 조회해보면 정상으로 표시되고 실제 사용에 문제가 없었다. 스터디 멤버분은 긴(?) 시간이 지나면 동기문제가 해결되었다고 하는데, 내 경우에는 6시간이 지나도 문제가 해결되지 않았다.
# kops 에서 상태이상과 validation 실패
INSTANCE GROUPS
NAME ROLE MACHINETYPE MIN MAX SUBNETS
master-ap-northeast-2a Master c5.2xlarge 1 1 ap-northeast-2a
nodes-ap-northeast-2a Node c5.2xlarge 1 1 ap-northeast-2a
nodes-ap-northeast-2c Node c5.2xlarge 1 1 ap-northeast-2c
NODE STATUS
NAME ROLE READY
i-04a4b94a0b4aaaf3e node True
i-0b30de93024b77efe node True
i-0d7115b54697b7a64 master True
VALIDATION ERRORS
KIND NAME MESSAGE
InstanceGroup nodes-ap-northeast-2a InstanceGroup "nodes-ap-northeast-2a" did not have enough nodes 0 vs 1
InstanceGroup nodes-ap-northeast-2c InstanceGroup "nodes-ap-northeast-2c" did not have enough nodes 0 vs 1
Validation Failed
Error: Validation failed: cluster not yet healthy
(recursivecurry:N/A) [root@kops-ec2 ~]# kops get instances
ID NODE-NAME STATUS ROLES STATE INTERNAL-IP INSTANCE-GROUP MACHINE-TYPE
i-04a4b94a0b4aaaf3e i-04a4b94a0b4aaaf3e Detached node 172.30.84.143 nodes-ap-northeast-2c.recursivecurry.link c5.2xlarge
i-0b30de93024b77efe i-0b30de93024b77efe Detached node 172.30.61.117 nodes-ap-northeast-2a.recursivecurry.link c5.2xlarge
i-0d7115b54697b7a64 i-0d7115b54697b7a64 UpToDate master 172.30.47.125 master-ap-northeast-2a.masters.recursivecurry.link c5.2xlar
# kubectl 에서 노드 정보를 보면 정상이고 잘 동작됨.
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
i-04a4b94a0b4aaaf3e Ready node 3h3m v1.24.10 172.30.84.143 13.125.224.77 Ubuntu 20.04.5 LTS 5.15.0-1028-aws containerd://1.6.10
i-0b30de93024b77efe Ready node 3h3m v1.24.10 172.30.61.117 3.38.182.232 Ubuntu 20.04.5 LTS 5.15.0-1028-aws containerd://1.6.10
i-0d7115b54697b7a64 Ready control-plane 167m v1.24.10 172.30.47.125 52.79.83.212 Ubuntu 20.04.5 LTS 5.15.0-1028-aws containerd://1.6.10
Reference
= = = = = = = = = = = = = = = =
과제
프로메테우스-스택 설치 후 ‘공식 or 여러가지 대시보드’를 추가

kube-state-metrics

node exporter full

kubernetes all-in-one cluster monitoring

kubernetes system api server
Nginx 파드를 배포 후 관련 metric 를 프로메테우스 웹에서 확인하고, 그라파나에 nginx 웹서버 대시보드를 추가 후 확인

prometheus nginx target

prometheus nginx_connections_active

nginx_connections_handled

nginx web server dashboard

‘NGINX Connection Active’ panel added.
메타데이터
- post_id
- 9170f238610
- slug
- pkos-쿠버네티스-실무실습-스터디-5주차-메모-9170f238610
- url
- https://medium.com/@recursivecurry/pkos-%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4-%EC%8B%A4%EB%AC%B4%EC%8B%A4%EC%8A%B5-%EC%8A%A4%ED%84%B0%EB%94%94-5%EC%A3%BC%EC%B0%A8-%EB%A9%94%EB%AA%A8-9170f238610
- canonical_url
- https://medium.com/@recursivecurry/pkos-%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4-%EC%8B%A4%EB%AC%B4%EC%8B%A4%EC%8A%B5-%EC%8A%A4%ED%84%B0%EB%94%94-5%EC%A3%BC%EC%B0%A8-%EB%A9%94%EB%AA%A8-9170f238610
- author_url
- https://medium.com/@recursivecurry
- status
- ok
- fetched_at
- 2026-09-08 12:59:03