안녕하세요! '골든 쿠버스트로넛'을 향해 함께 달리고 있는 여러분, 반갑습니다. 👋
오늘은 CKAD(Certified Kubernetes Application Developer) 시험 범위 중에서도 실무에서 가장 빈번하게 사용되는 주제인 "애플리케이션 모니터링을 위한 k8s 내장 CLI 도구"에 대해 아주 깊숙이 파헤쳐 보겠습니다. 🕵️♂️
별도의 무거운 모니터링 솔루션(Prometheus, Grafana 등) 없이도, 오직 kubectl만으로 클러스터와 애플리케이션의 상태를 진단하는 핵심 기술들을 정리해 드릴게요.

🚀 k8s 내장 CLI 도구로 애플리케이션 모니터링하기
쿠버네티스 환경에서 애플리케이션이 "잘 돌아가고 있는가?"를 확인하는 것은 단순히 Running 상태를 보는 것 이상을 의미합니다. 리소스 사용량, 로그 분석, 그리고 내부 상태 진단까지 CLI를 통해 완벽하게 제어할 수 있어야 합니다.
1. 리소스 모니터링의 기본: kubectl top 📊
가장 먼저 확인해야 할 것은 CPU와 Memory입니다. 애플리케이션이 버벅이거나 이유 없이 죽는다면 리소스 부족(OOM 등)일 확률이 높기 때문이죠.
💡 주의: kubectl top 명령어를 사용하려면 클러스터에 Metrics Server가 반드시 설치되어 있어야 합니다.
- Pod별 리소스 사용량 확인
# 현재 네임스페이스의 모든 Pod 리소스 확인 kubectl top pod # 특정 Pod의 컨테이너별 사용량 확인 (Multi-container Pod일 때 유용!) kubectl top pod <pod-name> --containers - Node별 부하 확인 애플리케이션뿐만 아니라 인프라 전체의 건강 상태를 체크할 때 사용합니다.
kubectl top node
2. 살아있는 증거 확보: kubectl logs 📝
애플리케이션 내부에서 무슨 일이 벌어지는지 알 수 있는 가장 직접적인 방법은 표준 출력(stdout/stderr) 로그를 보는 것입니다.
- 실시간 로그 스트리밍 (-f)
# 실시간으로 로그 추적 kubectl logs -f <pod-name> - 멀티 컨테이너 Pod 로그 Pod 안에 사이드카 컨테이너가 있다면 컨테이너 이름을 명시해야 합니다.
kubectl logs <pod-name> -c <container-name> - 이전 컨테이너의 로그 확인 (-p) 애플리케이션이 Crash되어 재시작되었다면, 현재 로그가 아닌 죽기 직전의 로그를 봐야 원인을 찾을 수 있습니다. CKAD 시험에서 매우 중요한 포인트입니다!
kubectl logs <pod-name> --previous
3. 상세 정보 및 이벤트 진단: kubectl describe 🔍
Pod가 Pending 상태이거나 ImagePullBackOff 에러가 발생했다면 로그에는 아무것도 찍히지 않습니다. 이때는 쿠버네티스 시스템이 기록한 Event를 봐야 합니다.
kubectl describe pod <pod-name>
이 명령어를 치면 하단의 Events 섹션을 가장 먼저 확인하세요.
- FailedScheduling: 노드 리소스 부족
- FailedMount: ConfigMap/Secret/PV 연결 실패
- Back-off restarting failed container: 애플리케이션 런타임 에러
4. 실시간 상태 감시: --watch 플래그 ⏳
배포 직후 애플리케이션이 정상적으로 구동되는지, 혹은 Rolling Update가 잘 진행되는지 1초마다 명령어를 치고 계신가요? --watch (혹은 -w)를 사용하세요.
# 상태 변화가 있을 때마다 즉시 출력
kubectl get pods -w
5. 직접 침투: kubectl exec & debug 🛠️
네트워크 연결 문제나 내부 설정 파일을 직접 확인해야 할 때는 컨테이너 내부로 들어가야 합니다.
- 대화형 터미널 접속
kubectl exec -it <pod-name> -- /bin/sh - 임시 디버그 컨테이너 실행 (v1.18+) 이미지가 너무 가벼워서(distroless 등) sh조차 없을 때는 kubectl debug를 통해 디버깅용 도구가 포함된 임시 컨테이너를 붙일 수 있습니다.
kubectl debug -it <pod-name> --image=busybox --target=<container-name>
🎯 CKAD 합격을 위한 실전 팁
시험에서는 단순히 명령어를 아는 것을 넘어 "어떤 상황에 어떤 도구를 쓸 것인가"를 결정하는 속도가 중요합니다.
- Pod 상태가 Running이 아닐 때: describe -> Events 확인.
- Running이지만 접속이 안 될 때: logs 확인.
- CrashLoopBackOff 발생 시: logs --previous로 이전 로그 확인.
- 성능 저하 의심 시: top pod으로 리소스 할당량(Limit/Request) 대비 사용량 확인.
💡 마무리하며
쿠버네티스 내장 도구만 잘 활용해도 대부분의 애플리케이션 장애를 80% 이상 진단할 수 있습니다. 특히 top, logs, describe 이 '삼총사'는 손가락이 기억할 정도로 연습해 두시길 바랍니다. ⌨️
'클라우드 > 쿠버네티스' 카테고리의 다른 글
| CKAD 정복의 시작: 쿠버네티스 Context와 Namespace 완벽 설정 가이드 (0) | 2026.02.01 |
|---|---|
| CKAD: 쿠버네티스 마스터를 위한 Docker 이미지 최적화 전략 (0) | 2026.02.01 |
| ⚓ CKAD 정복 시리즈: 쿠버네티스의 가장 작은 단위, Pod의 개념과 생명주기 완벽 해부 (0) | 2026.01.31 |
| ⚓ CKAD 정복 시리즈: 쿠버네티스 API의 작동 원리와 API 중단(Deprecation) 완벽 가이드 (0) | 2026.01.31 |
| '골든 쿠버스트로넛' 여정 (15/15): 대장정의 마침표! 🏁 LFCS 93점 고득점 합격 후기 및 15개 자격증 (0) | 2026.01.25 |