반응형
Liveness Probe와 Readiness Probe는 Kubernetes에서 Pod의 상태를 점검하기 위한 메커니즘으로, 애플리케이션의 가용성을 보장하고 클러스터의 안정성을 유지하는 데 중요한 역할을 합니다. 각각의 Probe는 Pod의 다른 상태를 확인하는 데 사용됩니다.
1. Liveness Probe
- 역할:
- 애플리케이션이 정상적으로 실행 중인지 확인합니다.
- 애플리케이션이 문제가 있거나 비정상 상태에 빠졌을 경우, 해당 컨테이너를 자동으로 종료하고 다시 시작(Restart)합니다.
- 사용 예시:
- 무한 루프와 같은 비정상 상태에 빠진 애플리케이션.
- 외부 요청을 더 이상 처리하지 않는 애플리케이션.
- Liveness Probe가 실패하는 경우:
- Kubernetes는 컨테이너를 재시작합니다.
- 이는 애플리케이션의 자체 복구가 불가능한 상태에서 특히 유용합니다.
- 구현 방식:
- HTTP 방식:
- 특정 엔드포인트(예: /healthz)로 요청을 보내서 200 OK 응답 여부를 확인.
- Command 방식:
- 컨테이너 내부에서 명령어를 실행해 결과로 상태 확인 (0: 성공, 1 이상: 실패).
- TCP 방식:
- 지정된 포트가 열려 있는지 확인.
- HTTP 방식:
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 3
periodSeconds: 10
2. Readiness Probe
- 역할:
- 애플리케이션이 트래픽을 처리할 준비가 되었는지 확인합니다.
- 준비되지 않은 Pod에 트래픽을 보내지 않도록 방지합니다.
- 사용 예시:
- 애플리케이션이 부팅 후 데이터베이스 연결을 완료하거나 의존성 준비를 끝내야 하는 경우.
- 애플리케이션이 일정 시간 동안 요청을 처리할 수 없는 경우(예: 백그라운드 작업 수행).
- Readiness Probe가 실패하는 경우:
- Kubernetes는 해당 Pod를 서비스 엔드포인트에서 제외합니다.
- 컨테이너는 실행 중이지만 외부 요청을 받지 않게 됩니다.
- 구현 방식:
- HTTP 방식:
- 특정 엔드포인트로 요청을 보내서 200 OK 응답 여부를 확인.
- Command 방식:
- 컨테이너 내부에서 명령어를 실행해 준비 상태 확인.
- TCP 방식:
- 지정된 포트가 열려 있는지 확인.
- HTTP 방식:
readinessProbe:
httpGet:
path: /readiness
port: 8080
initialDelaySeconds: 5
periodSeconds: 10
비교
특징Liveness ProbeReadiness Probe
목적 | 컨테이너가 정상 동작하는지 확인 | 컨테이너가 트래픽을 처리할 준비가 되었는지 확인 |
---|---|---|
실패 시 조치 | 컨테이너를 재시작 | Pod를 서비스 엔드포인트에서 제외 |
적용 상황 | 컨테이너가 비정상 상태에 빠졌을 때 | 컨테이너가 임시적으로 요청을 처리할 수 없을 때 |
컨테이너 상태 | 실패 시 재시작 (CrashLoop 가능) | 실패 시 서비스 엔드포인트에서 제외, 상태는 Running 유지 |
3. 실제 사용 시 고려사항
- Liveness Probe와 Readiness Probe를 동시에 설정하여 애플리케이션의 안정성을 극대화.
- 초기화가 오래 걸리는 애플리케이션의 경우 initialDelaySeconds를 적절히 설정.
- 잘못된 Probe 설정으로 인해 애플리케이션이 재시작 루프에 빠지지 않도록 주의.
4. 추가 예시 (복합 Probe 설정)
containers:
- name: my-app
image: my-app:latest
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 3
periodSeconds: 10
readinessProbe:
httpGet:
path: /readiness
port: 8080
initialDelaySeconds: 5
periodSeconds: 10
위 설정에서는 Liveness Probe가 애플리케이션의 실행 상태를 감시하고, Readiness Probe가 트래픽 처리 준비 상태를 점검합니다. 이를 통해 고가용성과 안정성을 동시에 확보할 수 있습니다.
반응형
'IT > Kubernetes' 카테고리의 다른 글
[k8s] Ingress란? Ingress controller란? (0) | 2021.09.23 |
---|---|
[CKA독학] CKA 합격 후기(2021.07 - kubernetes v1.21) (27) | 2021.07.15 |
[CKA독학] Deployment update &Rollback (0) | 2021.07.05 |
[CKA독학] 트러블 슈팅 - Network troubleshooting (0) | 2021.07.05 |
[CKA독학] 트러블 슈팅 - Worker Node Failure (2) | 2021.07.02 |