Cloud/k8s-CKAD

[CKAD] Pod의 log 보기 및 metric 수집

jinkwon.kim 2024. 8. 27. 22:14
728x90
반응형

개요

Pod의 log를 보는 방법과 Pod의 metric 정보를 수집하는 방법을 알아보겠습니다. 

Log 확인 방법

Pod의 기본 Log 보기

kubectl logs <pod-name>

Pod 안에  container지정해서 보기

Pod안에 2개이상의 container가 존재할 때 각각 container의 log를 보는 방법입니다. 

kubectl logs <pod-name> -c <container-name>

모든 container의 Log를 한 번에 보기

kubectl logs <pod-name> --all-containers=true

 

Metrics(지표) 이란?

k8s에서는 Metric 이란 것이 존재하며 이는 지표를 의미합니다.

그래서 Metric(지표) 정보를 수집하기 위해서 다양한 도구와 방법을 thirdparty로 제공하고 있습니다. 

Metric 정보 종류

Resource Metrics

리소스 메트릭은 Kubernetes 클러스터에서 각 Pod, 노드 및 컨테이너가 사용하는 CPU, 메모리와 같은 기본적인 리소스 사용량을 측정하는 메트릭입니다. 리소스 메트릭은 기본적인 클러스터 운영에 필수적이며, Metrics Server가 이를 제공합니다.

  • CPU 사용량 (CPU Usage):
    • 각 Pod 또는 컨테이너가 사용 중인 CPU 자원의 양. 초당 밀리코어(millicore) 단위로 표현됩니다.
  • 메모리 사용량 (Memory Usage):
    • 각 Pod 또는 컨테이너가 사용 중인 메모리 자원의 양. 바이트(byte) 단위로 표현됩니다.
  • 네트워크 사용량 (Network Usage):
    • Pod 또는 노드에서 발생하는 네트워크 트래픽(송수신 바이트 수)입니다.
  • 디스크 사용량 (Disk Usage):
    • Pod 또는 노드가 사용하는 디스크 공간 및 I/O 사용량입니다.

컨트롤러 메트릭 (Controller Metrics)

Kubernetes의 컨트롤러(Deployment, StatefulSet 등)와 관련된 메트릭입니다. 이는 애플리케이션의 상태를 관리하는 데 중요한 역할을 합니다.

  • Pod 레플리카 상태 (Pod Replica States):
    • 현재 실행 중인 Pod의 수와 목표로 하는 Pod의 수(예: desired vs current replicas).
  • Pod 상태 (Pod States):
    • Pod의 상태(Ready, Running, Pending, Failed 등)를 나타내는 메트릭.

노드 메트릭 (Node Metrics)

Kubernetes 클러스터 내에서 각 노드의 상태와 리소스 사용량을 모니터링하는 메트릭입니다.

  • 노드 CPU 사용량 (Node CPU Usage):
    • 노드 전체에서 사용 중인 CPU의 양.
  • 노드 메모리 사용량 (Node Memory Usage):
    • 노드 전체에서 사용 중인 메모리의 양.
  • 노드 상태 (Node Status):
    • 각 노드의 상태(Ready, NotReady 등)를 나타내는 메트릭.

Kubelet Metrics

Kubelet은 각 노드에서 컨테이너의 라이프사이클을 관리하는 에이전트입니다. Kubelet 관련 메트릭은 노드의 상태 및 성능을 모니터링하는 데 사용됩니다.

  • Pod 시작 시간 (Pod Start Time):
    • 특정 Pod가 시작되는 데 걸리는 시간.
  • 컨테이너 상태 (Container States):
    • 컨테이너의 상태(Running, Terminated, Waiting 등)를 나타내는 메트릭.

API Server Metrics

Kubernetes API 서버의 성능 및 상태와 관련된 메트릭입니다.

  • API 요청 수 (API Request Count):
    • 각 API 엔드포인트에 대한 요청 수.
  • API 요청 지연 시간 (API Request Latency):
    • API 서버의 요청 처리 시간.

Etcd Metrics

Kubernetes의 분산 키-값 저장소인 etcd의 상태와 성능을 모니터링하는 메트릭입니다.

  • Etcd 쿼리 지연 시간 (Etcd Query Latency):
    • etcd에서의 데이터 읽기/쓰기 요청에 대한 응답 시간.
  • Etcd 데이터 크기 (Etcd Data Size):
    • etcd 클러스터의 데이터 크기.

Custom Metrics (사용자 정의 메트릭)

애플리케이션이나 특정 서비스에서 정의한 커스텀 메트릭입니다. Kubernetes에서는 Custom Metrics API를 사용해 이러한 메트릭을 수집하고, Horizontal Pod Autoscaler(HPA)에서 사용할 수 있습니다.

  • 비즈니스 로직 메트릭 (Business Logic Metrics):
    • 특정 비즈니스 로직에 관련된 메트릭(예: 웹사이트의 초당 요청 수, 특정 이벤트 발생 횟수 등).

Container Insights 및 로그 기반 메트릭

컨테이너 로그를 분석하여 수집된 메트릭으로, 특정 애플리케이션의 성능 문제를 파악하는 데 유용합니다.

  • 로그 기반 에러 카운트 (Log-based Error Count):
    • 컨테이너 로그에서 추출한 에러 메시지의 빈도.
  • 응답 시간 메트릭 (Response Time Metrics):
    • 애플리케이션 응답 시간을 기반으로 한 메트릭.

상세 확인

아래 site에서 상세 확인이 가능합니다. 

https://kubernetes.io/docs/reference/instrumentation/metrics/

 

Kubernetes Metrics Reference

Details of the metric data that Kubernetes components export.

kubernetes.io

Metric 정보 수집 방법

Metrics Server 사용

Kubernetes에서는 클러스터의 리소스 사용량(CPU, 메모리 등)을 수집하고 제공하기 위해 Metrics Server를 사용할 수 있습니다. 이는 Horizontal Pod Autoscaler(HPA)와 같은 기능에서 자주 사용됩니다.

Metrics Server 설치

Metrics Server는 Kubernetes 클러스터에 설치해야 합니다. 일반적으로 kubectl apply 명령어를 사용하여 설치할 수 있습니다.

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

Pod의 메트릭 확인

Metrics Server가 설치된 후, kubectl top 명령어를 사용하여 노드와 Pod의 리소스 사용량을 확인할 수 있습니다.

# 노드의 리소스 사용량 확인
kubectl top nodes

# Pod의 리소스 사용량 확인
kubectl top pods

 

정리

Log 보는 방법

단일 로그

kubectl logs <pod-name>

container 지정 로그 

kubectl logs <pod-name> -c <container-name>

모든 container 로그 

kubectl logs <pod-name> --all-containers=true

 

Metrics(지표) 이란?

k8s에서는 Metric 이란 것이 존재하며 이는 지표를 의미합니다.

그래서 Metric(지표) 정보를 수집하기 위해서 다양한 도구와 방법을 thirdparty로 제공하고 있습니다. 

가장 간단한 Metric 수집기로 Metrics Server 가 존재 합니다.

728x90
반응형