본문 바로가기

Infrastructure/Kubernetes

[CKA] Logging & Monitoring

Logging & Monitoring

  • 이번 장에서는 Certified Kubernetes Administrator (CKA) 을 준비하며 "로깅과 모니터링"에 대해서 알아보도록 한다.

Monitoring

필요성

  • 노드 레벨 지표: 클러스터 내 노드 수, 상태, CPU, 메모리, 네트워크, 디스크 사용률 등을 파악해야 한다.
  • Pod 레벨 지표: Pod 수, 각 Pod의 CPU, 메모리 소비량 등을 파악해야 한다.
  • 이러한 지표를 모니터링하고 분석하여 클러스터의 성능과 상태를 지속적으로 관리해야 한다.

모니터링 도구

  • 쿠버네티스는 기본적으로 완전한 기능을 갖춘 내장 모니터링 솔루션을 제공하지 않는다.
  • 다양한 오픈 소스 및 상용 솔루션을 사용할 수 있다.
    • 오픈 소스: Metrics Server, Prometheus, Elastic Stack
    • 상용 솔루션: Datadog, Dynatrace

  • Heapster: 과거에 사용되었던 모니터링 프로젝트이지만, 현재는 deprecated 되었다.

Metric Server

  • Heapster의 축소 버전으로 클러스터당 하나의 Metrics Server를 설치할 수 있다.
  • 각 노드와 파드의 지표를 수집하여 메모리에 저장한다.
  • 메모리 기반이므로 과거 성능 데이터를 확인할 수 없다.
  • 실시간 모니터링에 적합하다.

  • 각 노드에서 실행되는 kubelet은 cAdvisor(Container Advisor)라는 하위 컴포넌트를 포함한다.
  • cAdvisor는 파드의 성능 지표를 수집하고 kubelet API를 통해 노출한다.
  • Metrics Server는 kubelet API를 통해 지표를 수집하고 집계한다.

Metric Server 설치 및 설정

  • minikube: minikube addons enable metrics-server 명령어를 사용하여 Metrics Server를 활성화한다.
  • 기타 환경: Metrics Server GitHub 저장소에서 배포 파일을 클론하고 kubectl create 명령어를 사용하여 필요한 컴포넌트(파드, 서비스, 역할 등)를 배포한다.

모니터링

  • 노드 지표 확인: kubectl top node 명령어를 사용하여 각 노드의 CPU 및 메모리 소비량을 확인할 수 있다.
  • 파드 지표 확인: kubectl top pod 명령어를 사용하여 각 파드의 CPU 및 메모리 소비량을 확인할 수 있다.

로깅

도커 로깅

  • 도커 컨테이너에서 애플리케이션이 표준 출력(stdout)으로 로그를 생성한다.
  • -d 옵션을 사용하여 컨테이너를 분리 모드(detached mode)로 실행하면 로그가 화면에 표시되지 않는다.
  • docker logs <컨테이너 ID> 명령어를 사용하여 컨테이너의 로그를 확인할 수 있다.
  • -f 옵션을 사용하여 실시간 로그 스트림을 확인할 수 있다.

쿠버네티스 로깅

  • 도커 이미지와 동일한 이미지를 사용하여 쿠버네티스 파드를 생성한다.
  • kubectl logs <Pod 이름> 명령어를 사용하여 파드의 로그를 확인할 수 있다.
  • -f 옵션을 사용하여 실시간 로그 스트림을 확인할 수 있다.
  • 이 로그는 파드 내부의 컨테이너에 대한 로그다.

다중 컨테이너 파드 로깅

  • 쿠버네티스 파드는 여러 개의 도커 컨테이너를 포함할 수 있다.
  • 파드에 여러 컨테이너가 있는 경우 kubectl logs <Pod 이름> 명령어만으로는 어떤 컨테이너의 로그를 표시할지 알 수 없다.
  • 컨테이너의 이름을 명시적으로 지정해야 한다.
  • kubectl logs <Pod 이름> -c <컨테이너 이름> 명령어를 사용하여 특정 컨테이너의 로그를 확인할 수 있다.

참고한 강의

'Infrastructure > Kubernetes' 카테고리의 다른 글

[CKA] ConfigMap  (0) 2025.02.27
[CKA] Command  (0) 2025.02.27
[CKA] Admission Controller  (0) 2025.02.26
[CKA] Scheduling (DaemonSet & Static Pod)  (0) 2025.02.26
[CKA] Scheduling (Selector & Affinity)  (0) 2025.02.25