K8s에서 디버깅할 때 유용한 명령어 Top 10

Json·2025년 9월 24일
0

k8d

목록 보기
41/42

"kubectl 없이는 오늘도 출근 못합니다"


🐣 Intro

쿠버네티스를 쓰다 보면…
Pod가 안 떠요.
서비스가 안 붙어요.
이벤트가 안 찍혀요.

이럴 때 DevOps가 꺼내 드는 무기는 바로:
👉 kubectl과 각종 디버깅 명령어!

오늘은 그 중에서도 실무에서 진짜 자주 쓰는 Top 10 명령어를 소개합니다.


🔟 kubectl get pods -o wide

Pod 상태/노드 위치/Pod IP까지 전부 확인 가능.
CrashLoopBackOff? Pending? 다 여기서 시작.

kubectl get pods -o wide

Pod 상태/노드 위치/Pod IP까지 전부 확인 가능.
CrashLoopBackOff? Pending? 다 여기서 시작.

🙃 내 멘탈 상태:

"왜 저 Pod만 Pending이야…?"

9️⃣ kubectl describe pod

Pod 이벤트 로그 확인. 스케줄링/이미지 풀 실패/Probe 실패 등 모든 힌트가 여기 있음.

kubectl describe pod <pod name>

👀 Pod에게 직접 물어보는 느낌:

"야, 왜 안 떠?"
Pod: "ImagePullBackOff라니까…"

8️⃣ kubectl logs <"podname"> -c <"container-name">

CrashLoopBackOff의 진짜 원인 찾는 명령어.
애플리케이션 로그는 결국 여기서 확인.

kubectl logs myapp-12345
kubectl logs myapp-12345 -c sidecar

😂 로그 보면서 든 생각:

"아… 내 코드가 문제였네…"

7️⃣ kubectl logs --previous

CrashLoopBackOff 무한 루프에선 이전 실행 로그가 필요할 때가 있음.

kubectl logs myapp-12345 --previous

👉 진짜 원인은 이전 로그에 다 있다.

6️⃣ kubectl exec -it <"pod-name"> -- /bin/sh

컨테이너 내부로 들어가서 직접 확인.
환경변수, 파일, DNS 확인할 때 유용.

kubectl exec -it myapp-12345 -- /bin/sh

🤔 들어갔더니 아무것도 없는 scratch 이미지일 때:

"ls: not found" 🤯

5️⃣ kubectl get events --sort-by=.metadata.creationTimestamp

최근 이벤트 순서대로 확인.
Probe 실패, 이미지 풀 실패, 스케줄링 문제 다 찍힘.

kubectl get events --sort-by=.metadata.creationTimestamp

📜 이벤트 로그를 보면 알 수 있다:

"쿠버네티스는 다 말해주고 있었다…"

4️⃣ kubectl get svc,ingress -o wide

서비스/인그레스 상태를 한 번에 확인.
ClusterIP, NodePort, LoadBalancer, External IP까지.

kubectl get svc,ingress -o wide

🙄 외부 접속 안 될 때 진짜 많이 쓴다.

3️⃣ kubectl top pod

Pod 리소스(CPU, 메모리) 확인.
OOMKilled 확인할 때 필수.

kubectl top pod

Pod 메모리 1Gi 제한인데 1.2Gi 쓰는 중?
👉 Exit Code 137 예약 완료.

2️⃣ kubectl rollout restart deployment <"deployment-name">

애플리케이션 강제 재배포.
ConfigMap/Secret 바뀐 거 반영 안 됐을 때 유용.

kubectl rollout restart deployment myapp

🔥 DevOps 엔지니어의 만능키:
"일단 재시작 해보자."

1️⃣ kubectl describe node <"node-name">

노드 상태 문제일 때 필수.
DiskPressure, MemoryPressure, Network 문제 전부 여기서 확인.

kubectl describe node worker-1

💥 노드가 이미 비명 지르고 있었다:

"나 CPU 100%라고!"

🎬 마무리

쿠버네티스 디버깅은 어렵지만, 명령어 몇 개만 익히면 훨씬 편해집니다.

오늘도 기억하세요:

get으로 현황 확인

describe로 상세 원인 파악

logs로 애플리케이션 상태 확인

exec으로 직접 들어가서 확인

👉 결국 DevOps의 구호는 하나:

"kubectl 없이는 살 수 없다."

0개의 댓글