Kubernetes/Udemy - CKAD with Tests

Monitor and Debug Applications

비번변경 2021. 8. 5. 19:50

쿠버네티스에서 모니터링할 만한 부분은 아래와 같다.

  • 클러스터의 노드 수, 정상 노드 수 => 노드 수준 지표
  • CPU 사용률, 네트워크, 디스크 사용률 => 성능 지표
  • 포드 수 => 포드 수준 지표
  • 포드 각각의 CPU 사용량, 포드 각각의 메모리 사용량 => 포드 성능 지표

 

하지만 쿠버네티스가 전반적으로 모든 기능을 갖춘 모니터링 솔루션을 제공하지는 않는다. 하지만 Metrics-Server, Prometheus, Elastic Stack과 같은 오픈 소스나 Datadog 및 Dynatrace 등의 모니터링 솔루션을 사용할 수 있다.

 

Heapster

쿠버네티스 모니터링 및 분석을 가능하게 한 프로젝트 중 하나다.

현재는 더 이상 사용하지 않으며(deprecated), Metrics Server를 사용한다.

 

Metrics Server

클러스터 당 하나의 메트릭 서버를 가질 수 있다.

메트릭 서버는 쿠버네티스 노드와 포드에서 지표를 검색하고, 집계하여 메모리에 저장한다. 즉, 인메모리 모니터링 솔루션이다. 디스크에 지표를 저장하지 않기 때문에 성능 데이터의 이전 기록은 확인할 수 없다.

 

지표 생성 방법

쿠버네티스는 각 노드에서 kubelet이라고 하는 에이전트를 실행한다. kubelet은 쿠버네티스 API Master Server로부터 명령을 수신받아 노드에서 포드를 실행한다.

kubelet은 cAdvisor(Container Advisor)라는 하위 구성 요소를 포함한다.

cAdvisor는 포드에서 성능 지표를 검색하고, 지표를 kubelet API를 통해 노출하여 메트릭 서버를 사용할 수 있도록 한다.

 

사용 방법

  • 클러스터에서 minikube를 사용하는 경우
    minikube addons enable metrics-server​
minikube
쿠버네티스를 로컬에서 쉽게 실행하는 도구
쿠버네티스를 사용하거나 개발하려는 사용자들을 위해 가상 머신(VM)이나 노트북에서 단일 노드 쿠버네티스 클러스터를 실행한다.

 

  • 그 외
    github에서 프로젝트를 클론 하여 사용하면 된다.
    git clone https://github.com/kubernetes-sigs/metrics-server.git
    cd metrics-server
    kubectl create -f .
    필요한 포드, 서비스, role 등을 배포하여 메트릭 서버가 클러스터 내의 포드에서 성능 지표를 폴링 할 수 있도록 한다. 배포가 완료되면, 메트릭 서버가 데이터를 수집하고 처리할 시간을 잠시 준다. 데이터가 처리되면, 명령어로 클러스터 성능 등을 확인할 수 있게 된다.

 

지표 확인

  • 노드 성능 지표
    kubectl top node​
  • 포드 성능 지표
    kubectl top pod​

리눅스에서 top 명령어를 사용하는 것과 유사하다.