kubectl debug로 셸 없는 파드에 임시 컨테이너 붙여 디버깅하기
조회 2 · 댓글 0
distroless나 scratch 기반 이미지라 셸이 없어 kubectl exec가 안 될 때, 또는 컨테이너가 계속 죽어서 붙을 수조차 없을 때 쓰는 방법입니다. 파드를 재시작하지 않고 디버깅 도구가 든 임시 컨테이너(ephemeral container)를 실행 중인 파드에 얹을 수 있습니다.
kubectl debug -it <pod> --image=busybox:1.28 --target=<container>핵심은 --target입니다. 이 옵션을 주면 대상 컨테이너와 프로세스 네임스페이스를 공유해서 그 컨테이너의 프로세스와 /proc, 파일시스템까지 들여다볼 수 있습니다. 빼면 임시 컨테이너만 뜨고 정작 문제가 있는 컨테이너 내부는 못 봅니다. 셸 없이 크래시한 컨테이너를 조사하거나 프로파일러를 붙일 때 유용합니다.
주의: 임시 컨테이너는 한 번 추가하면 제거하거나 재시작할 수 없습니다. 없애려면 파드를 지웠다 다시 만들어야 하므로, 운영 파드에 붙일 때는 이 점을 감안하세요. 원본을 건드리기 싫다면 --copy-to로 파드 사본을 떠서 디버깅하는 모드도 있습니다.
🔗 https://kubernetes.io/docs/tasks/debug/debug-application/debug-running-pod/
🔗 https://kubernetes.io/docs/concepts/workloads/pods/ephemeral-containers/
로그인 후 답글을 남길 수 있습니다.