Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- CKA 기출문제
- CloudWatch
- 정보처리기사 실기
- Pinpoint
- aws
- Spring
- mysql 튜닝
- kotlin
- 정보처리기사 실기 기출문제
- Kubernetes
- 티스토리챌린지
- Linux
- CKA
- kotlin querydsl
- AWS EKS
- 공부
- PETERICA
- MySQL
- 정보처리기사실기 기출문제
- 기록으로 실력을 쌓자
- Elasticsearch
- kotlin spring
- minikube
- 오블완
- 코틀린 코루틴의 정석
- APM
- Java
- kotlin coroutine
- AI
- IntelliJ
Archives
- Today
- Total
피터의 개발이야기
[kubernetes] Pod의 생명 주기 본문
반응형
ㅁ 들어가며
ㅇ 지난 글, [Kubernetes] Pod의 건강 상태 체크 방법, Readiness Liveness Startup probe설정, Lifecycle Hook에서 Pod의 생명 주기에 따라 발생하는 lifecycle hook과 Probe라는 기능에 대해서 알아보았다.
ㅇ 이번 글에서는 쿠버네티스(Pod)의 생명 주기에 대해서 정리해 보았다.
ㅁ 간략한 Pod의 생명주기
- 생성 (Creation): Pod를 생성하고, 필요한 리소스를 할당한다.
- 준비 (Ready): Pod가 서비스에 제공할 수 있는지를 확인하는 데 사용되는 Readiness Probe의 결과에 따라 Pod가 준비되어 있는지 여부를 결정한다.
- 실행 (Running): Pod는 정상 작동하여 컨테이너 이미지에 내장되어 있는 어플리케이션을 기동하여 서비스를 제공한다.
- 오류 탐지와 해결 (Liveness Probe): Liveness Probe의 결과에 따라 Pod가 오류를 탐지하고 해결하는 과정이다. 만약 프로브가 실패하면 쿠버네티스는 Pod를 재시작한다.
- 종료 (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
반응형
'Kubernetes > 기초공부' 카테고리의 다른 글
[MSA] CQRS 패턴, B마트 전시 도메인 CQRS 적용하기를 보고... (0) | 2024.03.03 |
---|---|
[MSA] 12가지 마이크로서비스 패턴 (0) | 2024.03.02 |
[MSA] 마이크로서비스란? (0) | 2024.02.29 |
[MSA] 마이크로서비스란? - 배민 마이크로서비스 여행기를 보고... (6) | 2024.02.29 |
[MSA] 마이크로서비스 - 분산 트랜잭션 처리를 위한 Saga 패턴 (0) | 2024.02.27 |
Comments