[CKAD]Liveness와 Readiness 프로브 완벽 정리
Liveness와 Readiness 프로브는 Kubernetes에서 애플리케이션의 상태를 주기적으로 점검하여 Pod의 안정성을 유지하는 데 중요한 역할을 합니다.
여기서 중요한 것은 "애플리케이션의 상태"를 주기적으로 점검하는 것은 "Pod의 상태를 확인하는 게 아니라, Pod 내의 각 컨테이너를 개별적으로 점검하는 것"이라는거 기억하세요! Kubernetes에서는 프로브(Liveness, Readiness, Startup Probe)가 컨테이너 단위에서 동작한다고 생각하시면 됩니다.
1. Liveness Probe (생존 여부 확인)
Liveness 프로브는 컨테이너가 살아 있는지, 즉 정상적으로 작동 중인지를 확인합니다.
- 목적: 컨테이너가 정지하거나 내부적으로 문제가 생겨 복구가 불가능한 상태가 되었을 때, 이를 감지하고 컨테이너를 재시작합니다.
- 사용 사례:
- 애플리케이션이 무한 루프에 빠지거나, 응답을 멈춘 상태를 감지.
- 프로세스가 죽었으나 컨테이너는 종료되지 않은 경우.
예제
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 3
periodSeconds: 5
- httpGet: HTTP 요청을 통해 /healthz 엔드포인트를 확인.
- initialDelaySeconds: 컨테이너가 시작된 후 3초 뒤부터 검사 시작.
- periodSeconds: 5초 간격으로 검사를 수행.
2. Readiness Probe (준비 상태 확인)
Readiness 프로브는 컨테이너가 요청을 처리할 준비가 되었는지를 확인합니다.
- 목적: 애플리케이션이 아직 초기화 중이거나, 임시적으로 요청을 처리할 수 없는 상태를 감지하여 서비스에서 제외합니다.
- 사용 사례:
- 애플리케이션이 데이터베이스 연결을 설정하거나 캐시를 초기화 중인 경우.
- 특정 상태에서 임시적으로 외부 트래픽을 받을 준비가 안 된 경우.
예제
readinessProbe:
exec:
command:
- cat
- /tmp/ready
initialDelaySeconds: 5
periodSeconds: 10
- exec: 컨테이너 내부에서 /tmp/ready 파일이 존재하는지 확인.
- initialDelaySeconds: 5초 뒤부터 검사 시작.
- periodSeconds: 10초 간격으로 검사를 수행.
3. Startup Probe (시작 상태 확인)
Startup Probe는 컨테이너의 초기 시작을 확인하기 위한 프로브입니다.
- Kubernetes 1.16부터 도입.
- Liveness Probe와 달리, 애플리케이션이 시작하는 데 시간이 오래 걸리는 경우 사용합니다.
- Liveness Probe를 대체할 수 있고, 설정된 시간 동안 Startup Probe가 성공할 때까지 Liveness Probe는 실행되지 않습니다.
예제
startupProbe:
httpGet:
path: /startup
port: 8080
failureThreshold: 30
periodSeconds: 10
- failureThreshold: 30번 실패할 때까지 기다림 (최대 300초).
- periodSeconds: 10초 간격으로 검사를 수행.
프로브 유형
- HTTP Probes
- HTTP 요청을 사용해 상태를 확인.
- path: 상태 확인용 엔드포인트.
- httpGet: path: /health port: 8080 scheme: HTTP
- TCP Probes
- 포트에 대한 TCP 연결 가능 여부로 상태를 확인.
- tcpSocket: port: 3306
- Exec Probes
- 컨테이너 내부에서 명령어를 실행하여 상태를 확인.
- exec: command: - cat - /tmp/healthy
Liveness vs Readiness 차이점
Liveness Probe | Readiness Probe | |
목적 | 컨테이너가 살아 있는지 확인 | 컨테이너가 요청을 처리할 준비가 되었는지 확인 |
동작 | 실패 시 컨테이너를 재시작 | 실패 시 Pod를 서비스에서 제외 |
적용 시점 | 항상 활성화 | 서비스에 연결될 때만 활성화 |
사용 사례 | 컨테이너가 작동 불능 상태에 빠졌을 때 감지 | 애플리케이션이 초기화 중이거나 임시 중단 시 |
쿠버네티스 공식 문서에서 예제를 주니까 해당 예제를 보면서 yaml 파일에 작성하는 방법 및 등등을 파악해보면 좋을 것 같다!
Configure Liveness, Readiness and Startup Probes
This page shows how to configure liveness, readiness and startup probes for containers. For more information about probes, see Liveness, Readiness and Startup Probes The kubelet uses liveness probes to know when to restart a container. For example, livenes
kubernetes.io