본문 바로가기

IT 엔지니어/CLOUD

K8S POD 생성

[쿠버네티스 진행 상태]

  • Pending : 클러스터에서 파드가 생성된 상태
    • 하나 이상의 컨테이너가 설정되지 않음
    • 실행 준비되지 않음
  • Running : 노드에 파드 배치된 상태
    • 모든 컨테이너 생성 및 구동된 상테
    • 하나 이상의 컨테이너가 시작 및 실행 상태
  • Succeed / Failed : 모두 종료 / 실패 종료

1. Pod Phase (파드 상태 단계)

파드의 상태는 status.phase 필드로 표현되며, 파드가 전체적으로 어떤 상태인지를 요약합니다.

Phase 설명

Pending 파드가 쿠버네티스에 생성
  1개 이상 컨테이너 이미지 미다운상태
  노드에 스케줄되지 않음
Running 파드가 노드에 스케줄,
  1개 이상 컨테이너가 실행 중
  나머지도 실행 대기 중 또는 시작됨
Succeeded 파드 내 모든 컨테이너가 정상 종료
  다시 시작되지 않음 (종료 코드 0)
Failed 파드 내 하나 이상의 컨테이너가 실패제시작 미진행 (종료 코드 0이 아님)
Unknown API 서버가 파드 상태를 확인할 수 없음 (노드와의 통신 불가 등)

2. 컨테이너 상태 (Container Lifecycle State)

파드 안의 각 컨테이너는 다음의 상태를 가질 수 있습니다:

 

Waiting 아직 실행되지 않음. 이미지 다운로드 중이거나, 의존성 조건 미충족
Running 컨테이너가 실행 중이며, 정상 작동 중
Terminated 컨테이너가 종료됨. 종료 코드와 함께 종료 사유가 기록됨

 

 

 

 

[LIVENESSPROBE 이용 SELF HEALING POD 구성]

재시작 / 교체 / 일정 변경 / 종료

동작 유형
- httpGet 
지정한  IP PORT PATH에 요청 전송 해당 컨테이너 응답 여부 확인
- tcpSocket 
PORT tcp 연결 시도 및 재시작 우도
- exec 
실행 명령어로 지정한 명령 전달 
종료 코드 0이 아니면 컨테이너 재시작 유도

kubectl logs -f pod이름 -c 컨테이너이름

3. 공통 매개변수

 

initialDelaySeconds 프로브가 첫 시작 전 대기 시간(초).
  컨테이너가 시작 후 RUNNING
  첫 체크 시작 전 기다리는 시간
periodSeconds 프로브를 실행할 주기(초).
  프로브가 반복 실행 주기 설정 /  health check 반복 실행 시간
timeoutSeconds 프로브 실행의 타임아웃(초). 프로브가 성공적으로 완료될 때까지 기다리는 최대 시간 / GET 응답 확인
successThreshold 프로브가 "성공"으로 간주되는 최소 횟수. 기본값은 1
failureThreshold 프로브가 "실패"로 간주되는 최소 횟수. 기본값은 3
handler 프로브에서 사용할 httpGet, tcpSocket, 또는 exec의 설정 지정
apiVersion: v1
kind: Pod
metadata:
  name: mypod

spec:
  containers:
  - name: mylive
    image: nginx
    ports:
    - containerPort: 80
      protocol: TCP
        
    livenessProbe:
      httpGet:
        path: /
        port: 80

    livenessProbe:
      httpGet:
        path: /
        port: 80
      failureThreshold: 5
      periodSeconds: 30
      timeoutSeconds: 5

 

 

[smlinux/unhealthy 이미지 이용 livenessPRobe 파드 구성]

불량 이미지로 컨테이너 생성 

1st > 2nd > 3rd > 4th > 5th Request >
6th(500) > 7th(500)

apiVersion: v1
kind: Pod
metadata:
  name: mypod

spec:
  containers:
  - name: unhealth
    image: smlinux/unhealthy
    ports:
    - containerPort: 8080
      protocol: TCP
    livenessProbe:
      httpGet:
        path: /
        port: 8080

kubectl describe pod [mypod]

 

describe 상태

 

 

1st Request --> 200 OK
2nd Request--> 200 OK
...
5th Request--> 200 OK
6th Request--> 500 Error <-- livenessProbe 감지
			↓
컨테이너 자동 재시작
			↓
1st Request부터 반복

 

 

'IT 엔지니어 > CLOUD' 카테고리의 다른 글

K8S - Load Balance  (0) 2025.05.24
K8S 실습  (1) 2025.05.23
DOCKER NAMESPACE/STATEFULSET  (0) 2025.05.22
Docker POD  (1) 2025.05.21
Docker 기본 명령어  (0) 2025.05.20