새소식

AWS/EKS

[PKOS Study 4주차] k8s Monitoring - kubectl top / k9s

  • -

CloudNet@ 팀의 가시다님께서 Leading 하시는 PKOS 2기 Study 내용 요약

해당 Kubernetes Study 는 '24단계 실습으로 정복하는 쿠버네티스' 책을 기반으로 진행 중입니다.

 

 

이번 포스팅에서는 Kubernetes 모니터링에 사용되는 Metrics Server 와 관련 명령어인 kubectl top 에 대해서 알아보겠습니다.



1. Metrics Server

kubelet의 cAdvisor로부터 현재 Pod와 Node의 자원 사용량을 가져와
Kubernetes API Server의 Metrics API 를 통해 노출하는 기능을 합니다.

 

1.1. 용어 정리

  1. kubelet

컨테이너 리소스 관리를 위한 노드 에이전트
리소스 메트릭은 kubelet API 엔드포인트 /metrics/resource 및 /stats 를 사용하여 접근 가능합니다.

 

  1. cAdvisor

kubelet에 포함된 컨테이너 메트릭을 수집, 집계, 노출하는 데몬
컨테이너와 노드의 CPU, Memory, Network, File 등에 대한 다양한 자원 사용량을 백그라운드에서 자동 수집합니다.

 

프로메테우스, 데이터독 등의외부 모니터링 솔루션은 cAdvisor 의 /metrics/cadvisor 엔드포인트에서 메트릭을 조회 및 수집합니다.

 

  1. Metrics API

워크로드 오토스케일링에 사용되는 CPU 및 메모리 정보로의 접근을 지원하는 쿠버네티스 API

 

  • Kubernetes Metrics Pipeline Architecture

 

1.2. Metrics API 사용 [ kubectl top ]

현재 Metrics Server 가 설치되어 있는 지 확인

kubectl get pod -n kube-system -l k8s-app=metrics-server

 

 

Node 리소스 사용량 조회

kubectl top node

 

 

Pod 리소스 사용량 조회

kubectl top pods -A

 

 

Pod 리소스 CPU 사용량으로 내림차순 정렬

kubectl top pods -A --sort-by cpu

 

 

kubectl top 을 사용하면 CPU, Memory 사용량은 조회할 수 있지만, 클러스터의 Pod 수량 등의 상태를 확인하기는 어렵습니다.

클러스터 전반에 관련된 정보는 k9s 로 확인 가능합니다.



2. k9s

명령어 기반의 쿠버네티스 모니터링 도구

 

k9s 는 자원 사용량 뿐만 아니라 전체 파드 수량 등의 클러스터 현황을 파악할 수 있습니다.

 

2.1. k9s install

 

GitHub - derailed/k9s: 🐶 Kubernetes CLI To Manage Your Clusters In Style!

🐶 Kubernetes CLI To Manage Your Clusters In Style! - GitHub - derailed/k9s: 🐶 Kubernetes CLI To Manage Your Clusters In Style!

github.com

curl -sS https://webinstall.dev/k9s | bash

source ~/.config/envman/PATH.env

 

 

k9s 설치 확인

k9s

 

 

2.2. k9s Test

  • 아래 Deployment 를 배포하여 고의로 오류를 발생시킵니다.
apiVersion: apps/v1
kind: Deployment
metadata:
  name: error-image
spec:
  replicas: 2
  selector:
    matchLabels:
      app: error-image
  template:
    metadata:
      labels:
        app: error-image
    spec:
      containers:
      - image: centos-tool:no
        name: centos-tool

 

오류가 발생해야 정상

 

이후 k9s 화면에서 shift + ; 을 눌러 입력창을 띄운 후 pulses 를 입력하면 스크린샷과 같은 화면을 확인할 수 있습니다.

 

특정 Pod 를 선택하여 들어가면 Pod 의 로그 또한 확인할 수 있습니다.

 

 

Contents

포스팅 주소를 복사했습니다