[Kubernetes] 쿠버네티스 모니터링 (Monitoring) - Metrics Server
🚀 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 사용량을 확인할 수 있게 되었다.