Kubernetes Probe 튜토리얼
1. Probe란 무엇인가?
쿠버네티스에서 Pod은 단순히 컨테이너를 띄우는 것에 그치지 않고, 지속적으로 "건강 상태"를 모니터링합니다. 이때 사용하는 것이 Probe(프로브)입니다.
Liveness Probe: 컨테이너가 "살아 있는지" 확인합니다. 만약 실패하면 쿠버네티스는 해당 컨테이너를 재시작시킵니다.
Readiness Probe: 컨테이너가 "서비스 요청을 받을 준비가 되었는지" 확인합니다. 준비되지 않았다면 트래픽을 보내지 않습니다.
비유하자면:
Liveness는 "심장 박동 체크" → 살아있나?
Readiness는 "출근 준비 체크" → 일할 준비됐나?
2. Liveness Probe 실습
먼저 liveness_probe.yml을 살펴봅시다.
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx ports: - containerPort: 80 livenessProbe: httpGet: path: / port: 80 initialDelaySeconds: 5 periodSeconds: 5
여기서 중요한 부분은 livenessProbe 입니다.
httpGet: / 경로로 80포트에 요청을 보냄
initialDelaySeconds: 5 → 컨테이너 시작 후 5초 뒤부터 체크 시작
periodSeconds: 5 → 5초마다 한번씩 체크
실행 결과 (일부):
WSL2-Ubuntu24:kubernetes$ kubectl apply -f liveness_probe.yml deployment.apps/nginx-deployment created WSL2-Ubuntu24:kubernetes$ kubectl describe deployment nginx ... Liveness: http-get http://:80/ delay=5s timeout=1s period=5s #success=1 #failure=3 ...
이제 만약 컨테이너가 / 요청에 응답하지 않는다면, 쿠버네티스가 자동으로 재시작시켜줍니다. 즉, 서비스가 "죽은 척" 하고 있어도 알아서 회복시켜주는 거죠.
3. Readiness Probe 실습
이번엔 readiness_probe.yml을 보겠습니다.
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx ports: - containerPort: 80 readinessProbe: httpGet: path: /not-ready port: 80 initialDelaySeconds: 5 periodSeconds: 5
여기서 readinessProbe가 /not-ready 경로를 체크하도록 되어 있습니다. 당연히 nginx 기본 설정에는 /not-ready가 없으니 실패합니다.
실행 결과 (일부):
WSL2-Ubuntu24:kubernetes$ kubectl get pods NAME READY STATUS RESTARTS AGE nginx-deployment-64cf76d6d9-l5vp7 0/1 Running 0 55s
보시다시피 Pod은 Running 상태지만 READY는 0/1 입니다. 즉, 컨테이너는 살아있지만 요청을 받을 준비는 안 됐다고 판단하는 것이죠.
✅ 이런 식으로 readinessProbe는 실제 서비스 엔드포인트 준비 상태를 체크하는 데 유용합니다. DB 연결이나 초기 캐시 로딩처럼, 컨테이너가 켜졌다고 바로 서비스할 수 없는 경우가 많거든요.
4. 실행 결과 정리
Liveness Probe: 응답이 없으면 Pod 재시작 → 서비스가 죽어도 자동 회복
Readiness Probe: 응답이 없으면 트래픽 제외 → 준비 안 된 Pod은 요청을 받지 않음
5. 응용 포인트
실제 서비스에서는 /healthz, /readyz 같은 전용 엔드포인트를 만들어 probe가 체크하도록 합니다.
DB 연결, 마이그레이션, 캐시 로딩 등 "준비 작업"이 끝날 때까지 readinessProbe가 트래픽을 막아줍니다.
LivenessProbe와 ReadinessProbe를 함께 써야 안정적인 운영이 가능합니다. (살아있지만 준비 안 된 Pod, 준비됐지만 죽은 Pod 구분)
이 전체 내용 요약
Liveness Probe는 컨테이너의 생존 여부를 체크하고, 실패 시 자동 재시작합니다.
Readiness Probe는 컨테이너가 요청을 받을 준비가 되었는지 체크하고, 준비되지 않으면 트래픽에서 제외합니다.
두 Probe를 함께 활용하면 안정적이고 자동 회복 가능한 Kubernetes 애플리케이션을 만들 수 있습니다.
댓글 ( 0)
댓글 남기기