DevOps/Kubernetes

[Kubernetes] 쿠버네티스 모니터링 (Monitoring) - Metrics Server

TTOII 2022. 6. 13. 11:01
728x90

🚀 Metrics Server란 ?

Kubernetes 지표 서버 설치 - Amazon EKS

쿠버네티스의 Metrics Server란 각 노드에 설치된 kubectl을 통해서 노드 및 파드의 CPU, Memory의 사용량을 수집한다.

Linux의 top 명령을 쿠버네티스에서 사용하는 것과 비슷하다.

 

쿠버네티스 v1.11 이후로 Heapster를 deprecated 시키고 Metrics Server를 모니터링 표준으로 도입하였다.

Metircs Server는 Heapster를 간소화한 버전이라고 생각하면 된다. kubectl에서 메트릭 데이터를 수집해서 메모리에 저장한다.

또한 apiserver를 통해 파드나 노드의 메트릭을 조회하는데 사용되는 Metrics API를 제공한다.

 

쿠버네티스에서 필요한 핵심 데이터들은 대부분이 etcd에 저장되는데 메트릭 데이터들을 etcd에 저장하면 etcd의 부하가 너무 커지기 때문에 그렇게 하지 않고 메모리에 저장하도록 되어있다.

데이터를 메모리에 저장하기 때문에 Metrics Server용으로 실행한 파드가 재시작하면 수집됐던 데이터가 사라진다.

따라서 데이터 보관 주기를 길게 가지기 위해서 별도의 외부 스토리지를 사용하도록 설정해야 한다.

 

Metrics Server는 Horizontal Pod Autoscaler 또는 Kubernetes Dashboard 와 같은 다른 Kubernetes 추가 기능에서 일반적으로 사용된다.

 

 

🚀 요구사항

Metrics Server를 배포하기 위해서는 쿠버네티스 클러스터에 Aggregation Layer가 활성화되어 있어야 한다.
대부분 기본적으로 활성화되어 있으나 직접 활성화해야 하는 경우라면 여기를 참조한다.

 

 

🚀 EKS 클러스터에 Metrics Server 설치

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml

Metrics Server git 저장소의 componenets.yaml 파일로 deploy한다.

 

$ kubectl get deployment metrics-server -n kube-system
$ kubectl get po -n kube-system
metrics-server-64cf6869bd-swjfv                 1/1     Running   0          62s

kube-system 네임스페이스에 metric-server가 배포된 것을 확인한다.

 

$ kubectl top nodes
NAME                                                 CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%
ip-192-168-112-98.ap-northeast-2.compute.internal    56m          2%     651Mi           19%
ip-192-168-159-84.ap-northeast-2.compute.internal    52m          2%     571Mi           17%
ip-192-168-161-157.ap-northeast-2.compute.internal   57m          2%     663Mi           19%

top 명령을 통해 CPU, Memory 사용량을 확인할 수 있게 되었다.

728x90