파드 수명 주기 및 상태
파드가 거치는 다양한 단계를 이해하고 상태를 모니터링하는 방법을 익히세요.
파드 수명 주기 및 상태은(는) CoddyKit의 무료 DevOps Bootcamp 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 DevOps Bootcamp 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.
Pod의 생애 여정
Pod는 정적인 존재가 아니라 여정처럼 여러 단계를 거칩니다. 이 "수명 주기"를 이해하는 것은 Kubernetes에서 애플리케이션을 효과적으로 관리하는 데 중요합니다.
이를 통해 앱이 정상인지, 시작 중인지, 아니면 문제가 발생했는지 파악할 수 있습니다.

Pod의 다섯 가지 생명 주기 단계
Kubernetes는 Pod를 다섯 가지 주요 단계로 분류합니다. 이 단계는 Pod의 현재 상태를 높은 수준에서 보여 줍니다.
- Pending: Pod가 Kubernetes에 의해 수락되었지만 컨테이너가 아직 시작되지 않았습니다.
- Running: Pod 안의 컨테이너가 하나 이상 실행 중이거나 시작 중입니다.
- Succeeded: Pod의 모든 컨테이너가 성공적으로 완료되었으며 다시 시작되지 않습니다.
- Failed: 모든 컨테이너가 종료되었고, 그중 하나 이상이 실패했습니다(예: 0이 아닌 코드로 종료됨).
- Unknown: Pod의 상태를 확인할 수 없습니다. 통신 문제로 인해 발생하는 경우가 많습니다.
1단계: Pending Pod
Pod가 Kubernetes API 서버에 의해 수락되었지만 하나 이상의 컨테이너가 아직 생성되거나 구성되지 않은 경우 Pending 단계에 있습니다.
일반적인 원인은 다음과 같습니다.
- 컨테이너 이미지를 아직 다운로드하는 중입니다.
- 클러스터에 Pod를 예약할 CPU 또는 메모리 리소스가 충분하지 않습니다.
- 볼륨을 아직 프로비저닝하거나 마운트하는 중입니다.
Pending Pod 관찰하기
예를 살펴보겠습니다. 존재하지 않는 이미지로 Pod를 배포하려고 하면 'Pending' 상태에서 멈추거나 이미지 가져오기 오류가 표시될 수 있습니다.
다음은 Pod 정의 예시입니다.
apiVersion: v1
kind: Pod
metadata:
name: pending-pod-demo
spec:
containers:
- name: my-container
image: non-existent-image:latest
ports:
- containerPort: 80상태를 확인하려면 kubectl get pod를 사용합니다. 다음과 비슷한 결과가 표시될 수 있습니다.
$ kubectl get pod pending-pod-demo
NAME READY STATUS RESTARTS AGE
pending-pod-demo 0/1 ErrImagePull 0 5sErrImagePull은 이미지를 가져오지 못했다는 의미이며, 이로 인해 Pod가 Running 상태에 도달하지 못합니다.
2단계: 실행 중인 Pod
실행 중(Running) 단계는 Pod가 노드에 할당되었고 모든 컨테이너가 성공적으로 생성되었음을 의미합니다. 하나 이상의 컨테이너가 실행 중이거나 시작 또는 다시 시작되는 중입니다.
실행 중인 Pod라고 해서 내부의 애플리케이션이 정상 상태이거나 완전히 작동한다는 의미는 아니라는 점에 유의해야 합니다. 컨테이너가 활성 상태라는 뜻일 뿐입니다.
Pod 실행하기
다음은 Nginx 웹 서버를 위한 표준 Pod 정의입니다. 이를 적용하면 Pod가 곧 'Running' 상태로 전환됩니다.
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80배포한 후 kubectl get pod를 사용하면 다음과 같이 표시됩니다.
$ kubectl get pod nginx-pod
NAME READY STATUS RESTARTS AGE
nginx-pod 1/1 Running 0 10sREADY의 1/1은 정의된 컨테이너 한 개 중 한 개가 준비되었음을 확인해 줍니다.
3 및 4단계: 성공 및 실패
이 단계는 Pod의 종료 상태를 나타냅니다.
- 성공(Succeeded): Pod의 모든 컨테이너가 성공적으로 종료되었고 다시 시작되지 않을 때 이 단계로 전환됩니다. 일회성 작업이나 일괄 작업을 실행하는 Pod에서 일반적으로 나타납니다.
- 실패(Failed): Pod의 모든 컨테이너가 종료되었으며, 하나 이상의 컨테이너가 실패로 종료된 경우 Pod는 실패(Failed) 단계에 있습니다(예: 0이 아닌 상태 코드로 종료된 경우).
이러한 단계를 이해하면 작업 완료 여부나 애플리케이션 오류를 진단하는 데 도움이 됩니다.
수수께끼 같은 알 수 없음 단계
알 수 없음(Unknown) 단계는 Pod의 상태를 확인할 수 없음을 의미합니다. 드물지만 중요한 단계입니다.
일반적으로 Pod가 실행 중인 노드의 Kubelet(에이전트)이 Kubernetes API 서버와의 통신을 중단했을 때 발생합니다. 네트워크 문제, Kubelet 충돌 또는 노드 자체의 문제 때문일 수 있습니다.
Pod 내부의 컨테이너 상태
Pod에는 전체적인 단계가 있지만 Pod 내부의 개별 컨테이너에도 더 세부적인 자체 상태가 있습니다. 이러한 상태는 전체 Pod 단계에 직접적인 영향을 줍니다.
- 대기(Waiting): 컨테이너가 현재 시작되기를 기다리고 있습니다. 이미지 가져오기, 리소스 할당 또는 초기화 컨테이너가 완료되기를 기다리는 상황 등이 원인일 수 있습니다.
- 실행 중(Running): 컨테이너가 문제없이 활발하게 실행되고 있습니다.
- 종료(Terminated): 컨테이너의 실행이 완료되었습니다. 성공했을 수도 있고 실패했을 수도 있습니다.
Pod 상태 확인
새 Pod를 방금 배포했다고 가정해 보겠습니다. kubectl get pod my-app을 실행하면 다음과 같은 출력이 표시됩니다.
NAME READY STATUS RESTARTS AGE
my-app 0/1 Pending 0 12smy-app Pod가 준비된 컨테이너 0/1개와 함께 Pending 상태에 있는 가장 가능성 높은 이유는 무엇일까요?
수명 주기 요약 및 다음 단계
지금까지 Kubernetes Pod가 서로 다른 단계인 Pending, Running, Succeeded, Failed, Unknown을 거친다는 것을 배웠습니다. 이러한 단계는 Pod의 운영 상태를 높은 수준에서 파악할 수 있게 해 줍니다.
또한 개별 컨테이너 상태(Waiting, Running, Terminated)도 살펴보았습니다. 이러한 상태는 Pod의 전체 단계에 영향을 줍니다. kubectl get pod와 kubectl describe pod(나중에 더 자세히 살펴봅니다!)로 이러한 상태를 모니터링하는 것은 애플리케이션의 상태를 이해하는 데 매우 중요합니다.
다음으로 고급 Pod 패턴을 살펴보면서 사이드카 패턴을 사용해 하나의 Pod 안에서 같은 위치에 배치된 여러 컨테이너를 실행하는 방법을 알아보겠습니다!
자주 묻는 질문
“파드 수명 주기 및 상태” 강의는 무료인가요?
네 — “파드 수명 주기 및 상태” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 DevOps Bootcamp 강의 전체를 잠금 해제할 수 있습니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.
“파드 수명 주기 및 상태”에서 뭘 배우나요?
파드가 거치는 다양한 단계를 이해하고 상태를 모니터링하는 방법을 익히세요. 브라우저에서 직접 실행하는 실습 코드로 DevOps Bootcamp을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
DevOps Bootcamp을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 DevOps Bootcamp은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“파드 수명 주기 및 상태” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 DevOps Bootcamp 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 DevOps Bootcamp 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 파드: 가장 작은 단위
- 파드 수명 주기 및 상태
- 다중 컨테이너 파드(사이드카)
- 초기화 컨테이너와 시작 순서