관리 메뉴

피터의 개발이야기

[kubernetes] Pod의 생명 주기 본문

Kubernetes/기초공부

[kubernetes] Pod의 생명 주기

기록하는 백앤드개발자 2024. 9. 21. 10:10
반응형

 

 

[kubernetes] 쿠버네티스 목차

ㅁ 들어가며

ㅇ 지난 글, [Kubernetes]  Pod의 건강 상태 체크 방법, Readiness Liveness Startup probe설정, Lifecycle Hook에서 Pod의 생명 주기에 따라 발생하는 lifecycle hook과 Probe라는 기능에 대해서 알아보았다.

ㅇ 이번 글에서는 쿠버네티스(Pod)의 생명 주기에 대해서 정리해 보았다.

ㅁ 간략한 Pod의 생명주기 

  1. 생성 (Creation): Pod를 생성하고, 필요한 리소스를 할당한다.
  2. 준비 (Ready): Pod가 서비스에 제공할 수 있는지를 확인하는 데 사용되는 Readiness Probe의 결과에 따라 Pod가 준비되어 있는지 여부를 결정한다.
  3. 실행 (Running): Pod는 정상 작동하여 컨테이너 이미지에 내장되어 있는 어플리케이션을 기동하여 서비스를 제공한다.
  4. 오류 탐지와 해결 (Liveness Probe): Liveness Probe의 결과에 따라 Pod가 오류를 탐지하고 해결하는 과정이다. 만약 프로브가 실패하면 쿠버네티스는 Pod를 재시작한다.
  5. 종료 (Termination): Pod가 더 이상 필요하지 않거나, 종료 명령이 실행되면 Pod는 종료된다.

 

1. 생성

ㅇ Pod를 생성할 때, 다음과 같은 옵션을 지정할 수 있다.

  • spec.containers: 컨테이너의 이미지와 명령어를 정의
  • spec.volumes: 볼륨을 정의하여 데이터를 저장
  • spec.restartPolicy: Pod가 종료되면 다시 시작하는지 여부를 결정

 

apiVersion: v1
kind: Pod
metadata:
  name: example-pod
spec:
  containers:
  - name: example-container
    image: nginx
  restartPolicy: Always

 

2. 준비

ㅇ Pod가 서비스를 제공할 수 있는지를 Readiness Probe로 확인하여 그 결과에 따라 Pod의 Ready 상태가 결정된다.

apiVersion: v1
kind: Pod
metadata:
  name: example-pod
spec:
  containers:
  - name: example-container
    image: nginx
    readinessProbe:
      httpGet:
        path: /
        port: 80

 

3. 실행

ㅇ Pod는 정상 작동하고, 컨테이너 내부에서 명령어를 실행하여 서비스를 제공한다.

apiVersion: v1
kind: Pod
metadata:
  name: example-pod
spec:
  containers:
  - name: example-container
    image: nginx

 

4. 오류 탐지와 해결

ㅇ Liveness Probe의 결과에 따라 Pod가 오류를 탐지하고 해결하는 과정이다.

apiVersion: v1
kind: Pod
metadata:
  name: example-pod
spec:
  containers:
  - name: example-container
    image: nginx
    livenessProbe:
      httpGet:
        path: /healthz
        port: 80

 

5. 종료

ㅇ Pod가 더 이상 필요하지 않거나, 종료 명령이 실행되면 Pod는 종료된다.

apiVersion: v1
kind: Pod
metadata:
  name: example-pod
spec:
  containers:
  - name: example-container
    image: nginx
  terminationGracePeriodSeconds: 30

 

ㅁ Lifecycle Hook

Pod가 시작 후, 종료 전에 kubelet은 Lifecycle Hook을 제공한다.

 - postStartHook: Pod가 시작된 후에 실행

 - preStopHook: Pod가 종료되기 전에 실행

apiVersion: v1
kind: Pod
metadata:
  name: lifecycle-demo
spec:
  containers:
  - name: lifecycle-demo-container
    image: nginx
    lifecycle:
      postStart:
        exec:
          command: ["/bin/sh", "-c", "echo Hello from the postStart handler > /usr/share/message"]
      preStop:
        exec:
          command: ["/bin/sh","-c","nginx -s quit; while killall -0 nginx; do sleep 1; done"]

ㅇ 이러한 Lifecycle Hook을 사용하여 Pod의 생명 주기 동안 다양한 이벤트를 처리할 수 있다.

 

ㅁ 함께 보면 좋은 사이트

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

[Kubernetes]  Pod의 건강 상태 체크 방법, Readiness Liveness Startup probe설정, Lifecycle Hook

컨테이너 라이프사이클 훅(Hook)

반응형
Comments