"kubectl 없이는 오늘도 출근 못합니다"
쿠버네티스를 쓰다 보면…
Pod가 안 떠요.
서비스가 안 붙어요.
이벤트가 안 찍혀요.
이럴 때 DevOps가 꺼내 드는 무기는 바로:
👉 kubectl과 각종 디버깅 명령어!
오늘은 그 중에서도 실무에서 진짜 자주 쓰는 Top 10 명령어를 소개합니다.

kubectl get pods -o widePod 상태/노드 위치/Pod IP까지 전부 확인 가능.
CrashLoopBackOff? Pending? 다 여기서 시작.
kubectl get pods -o wide
Pod 상태/노드 위치/Pod IP까지 전부 확인 가능.
CrashLoopBackOff? Pending? 다 여기서 시작.
🙃 내 멘탈 상태:
"왜 저 Pod만 Pending이야…?"
Pod 이벤트 로그 확인. 스케줄링/이미지 풀 실패/Probe 실패 등 모든 힌트가 여기 있음.
kubectl describe pod <pod name>
👀 Pod에게 직접 물어보는 느낌:
"야, 왜 안 떠?"
Pod: "ImagePullBackOff라니까…"
CrashLoopBackOff의 진짜 원인 찾는 명령어.
애플리케이션 로그는 결국 여기서 확인.
kubectl logs myapp-12345
kubectl logs myapp-12345 -c sidecar
😂 로그 보면서 든 생각:
"아… 내 코드가 문제였네…"
CrashLoopBackOff 무한 루프에선 이전 실행 로그가 필요할 때가 있음.
kubectl logs myapp-12345 --previous
👉 진짜 원인은 이전 로그에 다 있다.
컨테이너 내부로 들어가서 직접 확인.
환경변수, 파일, DNS 확인할 때 유용.
kubectl exec -it myapp-12345 -- /bin/sh
🤔 들어갔더니 아무것도 없는 scratch 이미지일 때:
"ls: not found" 🤯
최근 이벤트 순서대로 확인.
Probe 실패, 이미지 풀 실패, 스케줄링 문제 다 찍힘.
kubectl get events --sort-by=.metadata.creationTimestamp
📜 이벤트 로그를 보면 알 수 있다:
"쿠버네티스는 다 말해주고 있었다…"
서비스/인그레스 상태를 한 번에 확인.
ClusterIP, NodePort, LoadBalancer, External IP까지.
kubectl get svc,ingress -o wide
🙄 외부 접속 안 될 때 진짜 많이 쓴다.
Pod 리소스(CPU, 메모리) 확인.
OOMKilled 확인할 때 필수.
kubectl top pod
Pod 메모리 1Gi 제한인데 1.2Gi 쓰는 중?
👉 Exit Code 137 예약 완료.
애플리케이션 강제 재배포.
ConfigMap/Secret 바뀐 거 반영 안 됐을 때 유용.
kubectl rollout restart deployment myapp
🔥 DevOps 엔지니어의 만능키:
"일단 재시작 해보자."
노드 상태 문제일 때 필수.
DiskPressure, MemoryPressure, Network 문제 전부 여기서 확인.
kubectl describe node worker-1
💥 노드가 이미 비명 지르고 있었다:
"나 CPU 100%라고!"
쿠버네티스 디버깅은 어렵지만, 명령어 몇 개만 익히면 훨씬 편해집니다.
오늘도 기억하세요:
get으로 현황 확인
describe로 상세 원인 파악
logs로 애플리케이션 상태 확인
exec으로 직접 들어가서 확인
👉 결국 DevOps의 구호는 하나:
"kubectl 없이는 살 수 없다."