Post

stern

stern

stern

Stern이란?

Stern은 Kubernetes 환경에서 여러 개의 Pod 로그를 동시에 모니터링할 수 있도록 도와주는 CLI 툴입니다. 특정 라벨 셀렉터(label selector)나 Pod 이름 패턴을 기반으로 로그를 필터링하고 실시간으로 출력할 수 있어, 애플리케이션 디버깅과 운영 모니터링에 유용합니다.

Stern의 특징

✅ 다중 Pod 로그 출력 • 특정 네임스페이스 또는 라벨 셀렉터를 이용해 여러 Pod의 로그를 한 번에 볼 수 있음

✅ 실시간 로그 스트리밍 • Pod이 삭제되거나 새로운 Pod이 생성되어도 자동으로 감지하여 로그를 계속 출력

✅ 색상 구분 및 포맷팅 • Pod 및 컨테이너별 로그를 색상으로 구분해 가독성이 높음

✅ 정규 표현식(Regex) 지원 • 특정 패턴의 로그만 필터링하여 출력 가능

✅ kubectl과 유사한 사용법 • kubectl logs와 비슷하지만 더 강력한 기능을 제공

Stern 설치 방법

  1. Homebrew (macOS & Linux)

brew install stern

  1. Scoop (Windows)

scoop install stern

  1. 바이너리 다운로드 (GitHub Releases)

Stern의 최신 릴리즈를 GitHub에서 다운로드하여 직접 설치 가능

Stern 사용법

  1. 특정 Pod의 로그 모니터링

stern

예시:

stern my-app

👉 my-app이라는 이름을 가진 Pod의 로그를 실시간으로 확인

  1. 라벨 셀렉터를 활용한 로그 조회

stern -l app=my-app

👉 app=my-app 라벨을 가진 모든 Pod의 로그를 확인

  1. 특정 네임스페이스에서 실행

stern -n

예시:

stern my-app -n dev

👉 dev 네임스페이스의 my-app Pod 로그 조회

  1. 컨테이너별 로그 확인

stern -c

예시:

stern my-app -c nginx

👉 nginx 컨테이너의 로그만 출력

  1. 로그 필터링 (정규 표현식 사용)
stern my-appgrep “ERROR”

👉 “ERROR”가 포함된 로그만 출력

  1. 로그 타임스탬프 포함 출력

stern my-app –timestamps

👉 로그에 타임스탬프 추가

  1. JSON 포맷 로그 출력

stern my-app -o json

👉 로그를 JSON 형식으로 출력

Stern vs. kubectl logs 비교

기능 kubectl logs stern 특정 Pod 로그 조회 ✅ ✅ 여러 Pod 로그 동시 조회 ❌ ✅ 새로운 Pod 자동 감지 ❌ ✅ 로그 색상 구분 ❌ ✅ 정규 표현식 필터링 ❌ ✅ JSON 포맷 지원 ✅ ✅

Stern 활용 예시 • 마이크로서비스 환경에서 여러 Pod 로그를 한 번에 모니터링 • 배포 후 특정 에러 메시지 감지 및 디버깅 • 새로운 Pod이 추가되거나 롤링 업데이트될 때 자동으로 로그 모니터링 • CI/CD 파이프라인에서 로그 확인 자동화

결론

Stern은 Kubernetes 환경에서 실시간 로그 모니터링을 손쉽게 할 수 있도록 도와주는 강력한 도구입니다. kubectl logs보다 훨씬 강력한 기능을 제공하며, 여러 Pod의 로그를 동시에 확인할 수 있어 마이크로서비스 운영, 디버깅, 실시간 문제 해결에 적합합니다. 🚀

This post is licensed under CC BY 4.0 by the author.