Probe
쿠버네티스에서 컨테이너 상태를 주기적으로 진단하기 위해 사용되는 기능이다.
이를 통해 쿠버네티스는 각 컨테이너의 상태를 체크하고 문제가 발생한 경우에는 해당 컨테이너를 자동으로 재시작하거나 서비스에서 제외할 수 있다.
쿠버네티스의 Probe는 크게 세 가지 유형으로 나뉜다.
1. Liveness Probe
- 컨테이너가 살아있는지 주기적으로 확인
- 응답하지 않거나 문제가 있는 경우 해당 컨테이너 재시작(실습에서 확인 가능)
2. Readiness Probe
- 컨테이너가 외부 트래픽을 받을 준비가 되었는지를 확인
- 준비가 되지 않은 경우, 해당 Pod를 서비스 엔트포인트 목록에서 제외하여 트래픽이 들어가지 않도록 한다.
- readiness Probe에 실패하면 외부 API 호출에 실패하게 된다.
3. Startup Probe
- 애플리케이션이 시작될 때 가장 먼저 실행되는 Probe 이다.
- 복잡한 초기화 작업이나 긴 시작 시간을 가진 컨테이너의 경우, 이 Probe가 통과 되어야 Liveness와 Readiness Probe가 정상 동작한다.
- 초기화가 완료되지 않은 상태에서의 조기 재시작으로 방지하는 역할을 한다.
위 로그를 살펴보면 Spring Boot 애플리케이션 초기화가 이루어지는 과정에서 startupProbe가 이루어지는 것을 확인 가능하다.
그 후 10초 간격으로 livenessProbe와 readinessProbe가 이루어지는 것을 볼 수 있다.
startupProbe,livenessProbe,readinessProbe의 주기는 Deployment에서 설정 가능하다.
startupProbe:
httpGet:
path: "/startup"
port: 8080
periodSeconds: 5
failureThreshold: 36
readinessProbe:
httpGet:
path: "/readiness"
port: 8080
periodSeconds: 10
failureThreshold: 3
livenessProbe:
httpGet:
path: "/liveness"
port: 8080
periodSeconds: 10
failureThreshold: 3
Probe 실습
1. App이 아직 초기화 중인 경우 startupProbe가 실패이며, 이 상황에서는 Pod가 서비스에 연결이 안되어 있어서 외부 API호출이 실패한다.
2. 초기화가 완료된 후 livenessProbe는 성공하지만 readinessProbe는 실패하는 것은 아직 Pod가 서비스에 연결되지 않았음을 의미한다. 따라서 Pod 내부 API호출은 성공하지만 외부 API 호출은 여전히 실패한다.
3. livenessProbe와 readinessProbe가 모두 성공했다는 것은 Pod와 서비스가 정상적으로 연결이 완료된것이므로 외부 API 호출에 성공한다.
4. 트래픽 중단을 통해 readinessProbe가 실패하게 되면 외부 API 호출에 실패하게 된다. 이때 내부 API 호출은 성공한다.
5. server-error를 통해 livenessProbe를 실패하도록 하면 쿠버네티스가 Pod를 재시작 처리 하는것을 확인할 수 있다.
'DevOps > Kubernetes' 카테고리의 다른 글
[Kubernetes] Jenkins를 활용한 Blue/Green 배포 구현 (3) | 2025.08.05 |
---|---|
[Kubernetes] 배포 전략(Recreate/ RollingUpdate / BlueGreen / Canary) (2) | 2025.08.04 |
[Kubernetes] 쿠버네티스 오브젝트 정리 (3) | 2025.07.30 |
쿠버네티스 자동화 모니터링 환경 만들기: Loki-Stack과 Grafana 연동, 쿠버네티스 대표기능 테스트 (2) | 2025.07.29 |
Kubernetes란?, Kubernetes 설치 (2) | 2025.07.29 |