Kubernetes(쿠버네티스) metric-server(kubectl top) 모니터링 설치하기
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에 대한 정의를 살펴보면 namespace가 kube-system이다.
명령어:
kubectl get pods -n kube-system
명령어를 입력해보면
metrics-server POD가 동작중인 걸로 보인다.
근데 POD가 정상적으로 올라오지 않는다.
또, kubectl top pods를 입력하면 에러가 발생한다.
POD의 로그를 보면
명령어:
kubectl describe pods metrics-server-6bf466fbf5-94m9x -n kube-system
에러가 발생해 있다.
POD 배포 정의 수정해 보자
2. 배포 정의 수정
파일을 열어 - --kubelet-insecure-tls 옵션 값을 추가해 주면 된다.
명령어:
kubectl edit deployments.apps -n kube-system metrics-server
- --kubelet-insecure-tls 값을 추가해주자.
- --kubelet-preferred-address-types=InternalIP, ExternalIP, Hostname 값은 이미 있지만 없다면 같이 추가하고 저장하자.
ESC + wq + Enter를 입력하면 저장이 되며, 새로운 POD가 배포되고 기존에 에러가난 POD는 삭제된다.
드디어 POD가 정상 동작 중이다.
3. 리소스 확인하기
설치가 완료되었으니 쿠버네티스 내 리소스를 확인해 보자.
명령어:
kubectl top pods -n kube-system
네임스페이스를 알맞게 변경하여 확인할 수 있다.
CPU의 표현 단위는 m인데 밀리코어를 뜻한다.
쿠버네티스 문서를 참조해 보면 2m은 0.002 코어와 같다고 볼 수 있다.
(https://kubernetes.io/ko/docs/concepts/configuration/manage-resources-containers/)
Memory의 표현 단위는 Mi로 MB와 동일하게 생각할 수 있다.
상세하게는 Mi는 1024 크기로 단위를 계산한 것이고 MB는 1000 크기로 단위를 환산했다고 볼 수 있습니다.
명령어:
kubectl top nodes
이 명령어는 쿠버네티스 노드별 리소스를 확인할 수 있다.
개발 서버라 한 노드에서 마스터(컨트롤플레인), 워커 노드를 사용 중이라 하나로 표현이 됩니다.
배포된 전체 POD를 확인하는 명령어:
kubectl top pods --all-namespaces
전체 네임스페이스에 존재하는 pods를 모두 출력할 수 있습니다.
1초마다 변경된 리소스 상태를 계속 확인하는 명령어:
watch -n 1 kubectl top pods --all-namespaces
명령어를 반복적으로 입력할 필요 없이 1초마다 갱신되는 watch 명령입니다.
다음엔 프로메테우스와 그라파나를 활용해 모니터링하는 방법을 알아보겠습니다. 👋