이쿠의 슬기로운 개발생활

함께 성장하기 위한 보안 개발자 EverNote 내용 공유

Kubernetes/Monitoring

Kubernetes Monitoring : Metrics

이쿠우우 2020. 11. 7. 13:27
반응형

 

 

 

 

 

 

Kubernetes Monitoring : Metrics 

 


[Kubernetes Monitoring 관련 글 목록]

Kubernetes Monitoring : Metrics
Kubernetes Monitoring : HAP

Kubernetes Monitoring : Prometheus 개념

Kubernetes Monitoring : Prometheus 설치

Kubernetes Monitoring : Grafana


 

 

Kubernetes를 사용하다가 console 환경이 아닌 

GUI로 한눈에 Kubernetes Cluster 상태를 확인할 수 있는 Tool이 있나 확인하던 중

Kubernetes Monitoring에 대해서 리서치를 시작함.

 


 

Kubernetes에서 말하는 Metrics란?

 

 

계량이라는 뜻을 가진 Metrics는 Kubernetse에서 수집지표를 뜻함.

kubernetes에서 Monitoring으로 감시하기 위한 대상 자원들을 Metric(메트릭)이라고 부름.

 

kubernetes Metrics는 4계층으로 분류됨.

 

Metrices 4계층

 

1. Host 

Kubernetes Cluster를 구성하는 모든 Node의 

Host에 대한 CPU, 메모리, 디스크, 네트워크, 사용량과 

Node의 OS와 커널에 대한 모니터링을 함.

 

2. Container

Node에서 실행 중인 Container

CPU,메모리, 디스크, 네트워크 사용량 모니터링 함.

 

3. Application

Container에서 구동되는 개별 어플리케이션에 대한 모니터링. 

ex) 컨테이너에서 기동되는 node.js기반의 애플리케이션의 http 에러 빈도 등

 

4. Kubernetes

Container를 컨트롤 하는 Kubernetes 자체에 대한 모니터링 

(Kubernetes의 자원인 Service, POD, 계정 정보등이 이에 해당)

 

 

Metrices 종류를 2가지로 분류

 

이러한 4계층으로 분류된 Matrics는 

분류방법에 따라 2개의 Matrics로 분류됨.

 

 

1 . System Metrics

Metrics 4계층 중 Host와 Container에 해당하며

Node나 컨테이너의 CPU, 메모리 사용량 같은 일반적인 시스템 관련 Metrics.

System Metrics는 더 세분화해서 Core Metrics와 Non-core Metrics로 분류됨.

 

[Core Metrics]

kubernetes의 내부 컴포넌트들이 사용하는 Metrics. 

ex) kubectl top에서 사용하는 Metrics 값

 

[Non-core Metrics]

kubernetes가 직접 사용하지 않는 다른 시스템 Metrics을 의미

 

 

2 . Service Metrics

Metrics 4계층 중 Application과 Kubernetes에 해당하며

Application을 모니터링 하는데 필요한 Metrics

ex) 웹서버의 응답속도, 500error의 빈도 등

 

 

 

 


 

 

Metrics을 수집하는 방법

 

위에서 Metrics란 무엇인가를 알겠으니

이제 이러한 Metrics를 수집하는 방법도 알아야함.

Metrics를 수집하는 방법을 Pipeline이라고 하는데

Pipeline이 Monitoring과 같은 의미임.

Pipeline은 Core metric pipline, Monitoring pipeline 2가지가 있음.

 

 

1. Core metric pipeline (Resource Metric Pipeline)

 

Kubernetes의 Master Node, Worker Node로부터 수집되는 System Metrics에 대한 모니터링을 담당함.

kubectl top 명령으로 나오는 결과와 관련있는 Metric을 수집함.

 

[특징]

System Metrics만 수집가능.

주로 Kubernetes 를 구성하는 모듈(kube-apiserver, kube-Scheduler, kube-controller Manager 등등 )들이 사용함.

별도의 외부 서드파티(3rd-party) 모니터링 시스템과 연계되지 않음.

Scheduler와 HPA (Horizontal Pod Autoscaling)등등 에서 기초자료 수집용도로 사용됨.

 

 

[cAdvisor]

CAdvisor는 Kubernetse 에서 사용하는 기본적인 모니터링 Agent.

모든 Worker Node의 Kubelet은 CAdvisor를 자체적으로 내장하고 있음.

CAdvisor를 통해서 Node, Pod, Pod내부의 Container에 대한 System Metric정보를 수집함.

수집한 정보는  kubelet에 전달되고 

해당 정보는 이후에 Metric Server, Prommetheus (프로메테우스)에서 수집함.

 

 

[Metric Server]

kubernetes Addon 종류 중 하나로 공식적으로 Kubernetes에서 개발, 관리되는 Addon임.

Cadvisor가 kubelet에 전달해놓은 System Metric 정보를 가져와서 메모리에 저장함.

메모리에 저장되기 때문에 영구적이지가 않아서 짧은 기간의 데이터만 보관함.

 

Metric Server가 없는 상태에서 

kubectl top 명령을 해보면 아래와 같음.

Error from server (NotFound): the server could not find the requested resource (get services http:heapster:)

해당 Error msg는 Node에서 system metric을 수집하는 Metric Server가 없기 때문.

즉 Kubernetes cluster 구성 시 default로 있는 server가 아니고 

Metric Server를 별도로 추가적으로 구축해줘야함.

 

 

[k8s Aggregator]

기본적으로 kubernetes에서 제공하는 API( Kubernetes Core API )이외에 

더 많은 기능을 사용하기 위해 API 추가할 수 있도록 해주는 역할을 수행함.

k8s Aggregator를 통해 custom api를 Kube-apiserver에 등록할 수 있음.

 

[Metric API]

위에서 설명한 k8s Aggregator를 통해서 

Metric Server에서 사용할 Custom API인 Metric API를 kube-apiserver에 등록함.

 

Metric API가 등록되어있지 않다면

kubectl top 명령을 해보면 아래와 같은 msg를 확인할 수 있음.

error: Metrics API not available

일반적으로 Metric Server Addon을 설치하면 

Metric API까지 한번에 설치됨.

 

1. 모든 Worker Node의 cAdvisor에서 System Metric 정보를 수집.

2. cAdvisor는 수집한 정보를 kubelet으로 전송.

3. kubelet에 있는 System Metric 정보를 Metric Server가 받아와서 메모리에 저장함.

4. Metrics-Server에서는 System metric 정보를 사용하기 위해 Custom API를 k8s Aggregator를 통해 미리 API server에 등록해놓았음.

5. 등록된 Metrics API를 통해 수집된 System Metric 정보가 HPA로 전송됨.

6. 설정한 값에 따라 HPA에서는 kube-controller manager에 명령을 내림

7. 명령을 받은 kube-controller manager에서 pod을 scale-out 시킴

 

 

 


 

 

 

 

2. Monitoring pipeline (Full Metric Pipeline)

 

Kubernetes를 구성하는 Node이외에 별도의 Addon을 사용해서 모니터링 데이터를 수집함.

 

[특징]

System Metrics, Service Metrics 등 모두 수집가능.

주로 Kubernetes Cluster 사용자들이 필요한 자원을 모니터링 하는데 사용함.

별도의 외부 서드파티(3rd-party) 모니터링 시스템과 연계가능. ex) Prometheus(프로메테우스)

 

 

1. System Metric의 경우 kubernetes에서 공식적으로 제공하는 Metric Server Addon으로 수집하면 되지만

    Service Metric의 경우 기본 제공 Metric이 아님으로 Service Metric을 수집하는 별도의 Agent를 배치해야함.

    상위 그림의 Monitoring node agent에 해당함.

2. 수집한 System, Service Metric을 monitoring cluster agent으로 전송함. ex) Prometheus

3. Monitoring cluster agent는 해당 Metric을 Dashboard로 확인하거나 HPA로 전송함.

 

 

 

 

 

 

 


제 글을 복사할 시 출처를 명시해주세요.
글에 오타, 오류가 있다면 댓글로 알려주세요! 바로 수정하겠습니다!


 

 

Kubernetes Metric 참고

https://kubernetes.io/ko/docs/tasks/debug-application-cluster/resource-usage-monitoring/

https://bcho.tistory.com/1269

https://kubernetes.io/ko/docs/tasks/debug-application-cluster/resource-metrics-pipeline/

https://gruuuuu.github.io/cloud/monitoring-k8s1/#

https://arisu1000.tistory.com/27855

https://github.com/kubernetes/community/blob/master/contributors/design-proposals/instrumentation/monitoring_architecture.md#architecture

 

 

 

 

반응형