본문으로 건너뛰기

쿠버네티스 기본 모니터링


왜 쿠버네티스를 모니터링 해야할까?

쿠버네티스에서는 다음과 같은 리소스 사용량을 모니터링해야한다.

Node 수준

  • 전체 노드 수
  • 각 노드의 상태 (헬스 체크)
  • CPU, 메모리 사용량
  • 네트워크, 디스크 I/O

Pod 수준

  • Pod
  • Pod의 CPU / 메모리 사용량

그런데 ,쿠버네티스에는 기본적으로 완전한 모니터링 솔루션이 내장되어있지 않다. 이에 별도의 도구를 사용해야한다.

  • ex: Prometheus, Elastic Stack, Datadog, Dynatrace

쿠버네티스 빌트인 모니터링 프로젝트

Heapster

  • 초기 쿠버네티스 모니터링 프로젝트
  • Node/Pod 메트릭 수집 및 분석 가능
  • 지금은 Deprecated

Metrics Server

  • Heapster의 경량화 버전
  • HPA / VPA /kubectl top 명령 등에 필요한 실시간 메트릭 제공
  • 그러나, 메모리에만 저장 -> 과거 데이터 조회 불가
  • 작동방식
    • 모든 노드의 kubelet에서 Metrics Server로 전달한다.
    • kubelet은 내부적으로 cAdvisor를 포함하고있으며 cAdvisorPod의 CPU / 메모리 / 네트워크 사용량을 수집하고 Kubelet API로 노출시킨다.

Metrics Server 설치 방법

실제 모니터링 자체는 외부 솔루션을 추천하지만, HPA, VPA 등이 Metrics Server를 기준으로 이루어지기 때문에 해당 기능을 사용하기 위해서 Metrics Server 설치는 필수이다.

설치

git clone https://github.com/kubernetes-incubator/metrics-server.git
  • GitHub Repo 클론
kubectl create -f metrics-server/deploy/1.8+/
  • Metrics Server 배포

메트릭 조회

Node 단위

kubectl top node

Pod 단위

kubectl top pod

레퍼런스

  • Udemy - Certified Kubernetes Administrator (CKA) with Practice Tests (Mumshad)