← Back to list

[PKOS] 쿠버네티스 실무실습 스터디 5주차 메모

5주차 주제는 모니터링임. 프로메테우스랑 그라파나를 다룬다.

Curry Lee · 2023-02-14 16:21 · 1 claps · 8.3 min read
#k8s #pko
Open on Medium ↗
Wiki topics: ☁️ · DevOps & Cloud

[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 공홈의 대시보드 목록과 상세 페이지

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

kube-state-metrics

node exporter full

node exporter full

kubernetes all-in-one cluster monitoring

kubernetes all-in-one cluster monitoring

kubernetes system api server

kubernetes system api server

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

prometheus nginx target

prometheus nginx target

prometheus nginx_connections_active

prometheus nginx_connections_active

nginx_connections_handled

nginx_connections_handled

nginx web server dashboard

nginx web server dashboard

‘NGINX Connection Active’ panel added.

‘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