상세 컨텐츠

본문 제목

Kubernetes(쿠버네티스) metric-server(kubectl top) 모니터링 설치하기

DevOps/Kubernetes

by Hoonjo 2023. 7. 7. 19:30

본문

Kubernetes(쿠버네티스) metric-server(kubectl top) 모니터링 설치하기

Install Kubernetes metric-server (kubectl top) monitoring

 

 

 

쿠버네티스로 어플리케이션을 서비스하고 있는 입장에서는 리소스를 얼만큼 사용하고 있는지

혹은 문제가 생긴 부분이 있다면 얼만큼 빨리 캐치하는지가 중요하다고 생각한다.

 

 

 

그에 대한 기본이 모니터링이다.

 

 

 

 

쿠버네티스의 리소스를 모니터링 하는 방법에는 크게 두 가지가 있다고 생각한다.

하나는 그라파나, 프로메테우스와 같은 모니터링 툴을 이용하는 방법과

다른 하나는 서버에서 사용중인 리소스를 직접 확인하는 방법.

 

서버에서 사용중인 리소스를 직접 확인하는 방법에 대해서 알아보겠습니다.

 

kubectl top 명령을 입력했을때 사용관련한 설명이 나오면 그냥 쓸 수 있지만

나의 경우엔 해당 명령이 존재하지 않았다..

metric-server가 서버에 설치되어 있지 않기 때문이다.

 

 

아래는 metric-server(kubectl top) 설치 및 사용 방법을 기술하였습니다.

 

 

 

 

1. 모니터링 유틸 설치(metric-server)

 

서버에 접속해서 명령어를 수행

 

명령어:

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

  위 명령의 일부인 링크를 보면

https://github.com/kubernetes-sigs/metrics-server/releases/latest

  이 링크를 접속해보면 metrics-server 레퍼지토리의 최신 릴리즈 버전으로 화면이 이동된다.

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

  이 링크를 그냥 크롬 주소창에 붙여 넣으면 components.yaml 파일이 다운로드된다.

 

kubectl apply -f 명령으로 해당 yaml파일에 정의된 내용에 따라 쿠버네티스에 POD배포가 진행된다.

 

🧐 어디에 될까?

components.yaml 파일을 열어서

app에 대한 정의를 살펴보면 namespacekube-system이다.

components.yaml 파일 내용 일부

 

명령어:

kubectl get pods -n kube-system

  명령어를 입력해보면

kubetl get pods 결과

  metrics-server POD가 동작중인 걸로 보인다.

  근데 POD가 정상적으로 올라오지 않는다.

  또, kubectl top pods를 입력하면 에러가 발생한다.

 

POD의 로그를 보면

 

명령어:

kubectl describe pods metrics-server-6bf466fbf5-94m9x -n kube-system

kubectl describe 결과

  에러가 발생해 있다.

 

POD 배포 정의 수정해 보자

 


 

2. 배포 정의 수정

 

파일을 열어 - --kubelet-insecure-tls 옵션 값을 추가해 주면 된다.

 

명령어:

kubectl edit deployments.apps -n kube-system metrics-server

 

- --kubelet-insecure-tls 값을 추가해주자.

아래 - --kubelet-insecure-tls 추가

- --kubelet-preferred-address-types=InternalIP, ExternalIP, Hostname 값은 이미 있지만 없다면 같이 추가하고 저장하자.

 

ESC + wq + Enter를 입력하면 저장이 되며, 새로운 POD가 배포되고 기존에 에러가난 POD는 삭제된다.

POD 정상 동작

드디어 POD가 정상 동작 중이다.

 


 

3. 리소스 확인하기

 

설치가 완료되었으니 쿠버네티스 내 리소스를 확인해 보자.

 

명령어:

kubectl top pods -n kube-system

kubectl top pods 결과

네임스페이스를 알맞게 변경하여 확인할 수 있다.

 

CPU의 표현 단위m인데 밀리코어를 뜻한다.

쿠버네티스 문서를 참조해 보면 2m0.002 코어같다고 볼 수 있다.

(https://kubernetes.io/ko/docs/concepts/configuration/manage-resources-containers/)

 

Memory의 표현 단위MiMB동일하게 생각할 수 있다.

상세하게는 Mi는 1024 크기로 단위를 계산한 것이고 MB는 1000 크기로 단위를 환산했다고 볼 수 있습니다.

 

 

명령어:

kubectl top nodes

  이 명령어는 쿠버네티스 노드별 리소스를 확인할 수 있다.

 

kubectl top nodes 결과

  개발 서버라 한 노드에서 마스터(컨트롤플레인), 워커 노드를 사용 중이라 하나로 표현이 됩니다.

 

 

 

배포된 전체 POD를 확인하는 명령어:

kubectl top pods --all-namespaces

  전체 네임스페이스에 존재하는 pods를 모두 출력할 수 있습니다.

 

 

1초마다 변경된 리소스 상태를 계속 확인하는 명령어:

watch -n 1 kubectl top pods --all-namespaces

  명령어를 반복적으로 입력할 필요 없이 1초마다 갱신되는 watch 명령입니다.

 

 

 

다음엔 프로메테우스와 그라파나를 활용해 모니터링하는 방법을 알아보겠습니다. 👋

 

 

 

관련글 더보기