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. 용어 정리
- kubelet
컨테이너 리소스 관리를 위한 노드 에이전트
리소스 메트릭은 kubelet API 엔드포인트 /metrics/resource 및 /stats 를 사용하여 접근 가능합니다.
- cAdvisor
kubelet에 포함된 컨테이너 메트릭을 수집, 집계, 노출하는 데몬
컨테이너와 노드의 CPU, Memory, Network, File 등에 대한 다양한 자원 사용량을 백그라운드에서 자동 수집합니다.
프로메테우스, 데이터독 등의외부 모니터링 솔루션은 cAdvisor 의 /metrics/cadvisor 엔드포인트에서 메트릭을 조회 및 수집합니다.
- 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
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 의 로그 또한 확인할 수 있습니다.