Readiness Probe 설정이 반드시 있어야

by Master Seo

롤링 업데이트가 진정한 "무중단"이 되려면 포드 내부에 Readiness Probe 설정이 반드시 있어야 합니다


롤링 업데이트가 진정한 "무중단"이 되려면 포드 내부에 Readiness Probe 설정이 반드시 있어야 합니다. 이 설정이 있어야만 쿠버네티스가 "새 포드가 진짜 준비되었구나!"라고 판단하고 기존 포드를 지우기 때문입니다.

Readiness Probe(준비성 프로브)는 쿠버네티스가 컨테이너를 실행한 후, "이 컨테이너가 실제로 사용자의 요청(트래픽)을 받을 준비가 되었는가?"를 판단하기 위해 주기적으로 수행하는 상태 검사입니다.

쉽게 비유하자면, 식당 문은 열었지만(컨테이너 실행), 주방에서 요리 준비가 다 끝날 때까지(애플리케이션 초기화) 손님을 들여보내지 않고 입구에서 대기시키는 역할입니다.



1. 주요 역할: 트래픽 차단 및 허용

쿠버네티스 서비스(Service)는 여러 개의 포드를 묶어서 트래픽을 분산합니다. 이때 Readiness Probe는 일종의 '게이트 키퍼' 역할을 합니다.

준비 완료 (Success): 해당 포드의 IP를 서비스의 엔드포인트 리스트에 추가하여 실제 트래픽을 보내기 시작합니다.

준비 미흡 (Failure): 해당 포드를 엔드포인트 리스트에서 즉시 제거합니다. 포드는 여전히 실행 중(Running)이지만, 트래픽은 받지 않습니다.



2. 왜 필요한가요? (Liveness Probe와의 차이)

많은 분이 컨테이너가 죽었을 때 재시작해 주는 Liveness Probe와 혼동하시곤 합니다. 하지만 목적이 완전히 다릅니다.



3. 무중단 배포(Rolling Update)에서의 핵심 기능

롤링 업데이트 시 Readiness Probe가 있으면 다음과 같은 안전장치가 작동합니다.

새로운 버전의 포드(V2)가 생성됩니다.

V2 포드가 Readiness Probe를 통과할 때까지 기존 포드(V1)를 지우지 않습니다.

V2가 준비 완료되면 트래픽을 V2로 흘려보내고, 그제야 V1을 안전하게 제거합니다.

결과: 사용자 입장에서는 서버가 교체되는 동안 단 한 번의 끊김도 느끼지 못하게 됩니다.



4. 설정 예시 (YAML)

보통 HTTP 요청을 보내 확인하는 방식을 가장 많이 사용합니다.


readinessProbe:

httpGet:

path: /healthz # 애플리케이션의 상태 확인 경로

port: 8080 # 애플리케이션 포트

initialDelaySeconds: 5 # 컨테이너 시작 후 5초 뒤부터 검사 시작

periodSeconds: 10 # 10초마다 반복 검사

failureThreshold: 3 # 3번 연속 실패하면 '준비 안 됨'으로 간주




매거진의 이전글프로젝트 평가 기준