본문 바로가기

About/Kubernetes

[k8s] Pod LifeCycle(파드의 생명 주기)

Pod LifeCycle

파드는 생성부터 삭제까지의 과정에 생명 주기(LiefCycle)이 있습니다. 파드의 생명 주기는 다음과 같습니다.

파드의 Status

설명
Pending 파드의 작성을 기다리고 있는 상태, 컨테이너 이미지의 다운로드 등에 시간이 걸리는 경우가 있습니다.
Running 파드가 가동 중인 상태
Succeeded 파드 안의 컨테이너가 정상적으로 종료된 상태
Failed 파드 안의 컨테이너 중 하나의 컨테이너가 실패하여 종료된 상태
Unknown 어떤 이유로 파드와 통신할 수 없는 상태

Pod의 LifeCycle

파드는 Pending 단계에서 시작해서, 기본 컨테이너 중 적어도 하나 이상이 OK로 시작하게 되면 Running 단계를 통과하고, 그런 다음 파드의 컨테이너가 실패로 종료되었는지 여부에 따라 Succeeded 또는 Failed 단계로 이동합니다.

현재 파드의 생명 주기는 다음 명령어로 확인할 수 있습니다.

kubectl describe pods <파드이름>

현재 Running 중인 Pod의 상태를 확인해보도록 하겠습니다.
Status 항목을 살펴보면 현재 파드의 생명주기를 알 수 있습니다. 

[root@k8s-master ~]# kubectl describe pods nginx-deployment-69cfdf5bc7-gcpd2
Name:         nginx-deployment-69cfdf5bc7-gcpd2
Namespace:    default
Priority:     0
Node:         k8s-node2/192.168.56.32
Start Time:   Fri, 07 Jan 2022 13:35:49 +0000
Labels:       app=nginx-deployment
              pod-template-hash=69cfdf5bc7
Annotations:  cni.projectcalico.org/containerID: b55493deca71e924b1f262af9656954acd426c220b1c026a86de2f640688822f
              cni.projectcalico.org/podIP: 20.109.131.22/32
              cni.projectcalico.org/podIPs: 20.109.131.22/32
Status:       Running

# 중간 생략 
Conditions:
  Type              Status
  Initialized       True 
  Ready             True 
  ContainersReady   True 
  PodScheduled      True 
  
# 이후 생략

Status 항목을 보면 현재 파드가 Running 상태입니다. 그리고 Conditions 항목은 파드의 현재 상태 정보를 나타내며 Type과 Status로 구분되어 있습니다.

파드의 Conditions

Type 설명
Initialized 모든 초기화 컨테이너가 성공적으로 시작 완료되었다는 의미
Ready 파드는 요청들을 실행할 수 있고, 연결된 모든 서비스의 로드밸런싱 풀에 추가되어야 한다는 의미
ContainerReady 파드 안 모든 컨테이너가 준비 상태라는 뜻
PodScheduled 파드가 하나의 노드로 스케줄을 완료했다는 뜻
Unschedulable 스케줄러가 자원의 부족이나 다른 제약 등으로 지금 당장 파드를 스케줄 할 수 없다는 뜻

Status는 Type의 상태를 나타내는 True(상태 활성화), False(상태 비활성화), Unknown(상태 알 수 없음) 값을 출력합니다.


Pod의 LifeCycle에 대하여 알아보있습니다.

참고

더보기