네임스페이스 step03에서 실습하세요.
web 파드가 어느 노드에서 도는지, 클러스터 내부 IP는 무엇인지 확인하세요. 파드를 삭제하고 다시 만들면 IP가 유지되는가?
파드는 일회용이라 재생성 시 IP가 바뀝니다. 그래서 파드 IP에 의존하면 안 되고 Service(Step 06)를 씁니다.
web 파드 안에서 nginx 프로세스가 실제로 도는지, 그리고 localhost로 자기 자신에게 HTTP 요청이 되는지 확인하세요.
(alpine이라 curl 대신 wget. 셸은 sh)
initContainer가 실패하면 앱 컨테이너가 어떻게 되는지 확인하세요. (힌트: multi-container.yaml의 init command를 exit 1로 바꿔보기)
init command를 ['sh','-c','exit 1']로 바꿔 apply하면:
initContainer가 성공(exit 0)해야만 앱 컨테이너가 시작됩니다.
crasher 파드가 왜 죽는지 로그로 밝히세요. 현재 로그(logs)와 이전 로그(logs --previous)의 차이는?
CrashLoop 진단은 항상 --previous가 핵심입니다.
crasher의 restartPolicy를 Never로 바꾸면 어떻게 달라지는가? 왜 파드에서는 이게 기본이 아닐까?
spec.restartPolicy: Never로 바꾸면 한 번 죽고 STATUS가 Error로 멈춥니다(재시작 안 함). 일반 파드(서버 앱)는 죽으면 다시 살아나야 서비스가 유지되므로 기본이 Always입니다. 반대로 Job(Step 12)은 한 번 실행하고 끝나야 하므로 Never/OnFailure를 씁니다.
정리: kubectl delete namespace step03