Kubernetes 환경에서 Application을 안정적으로 운영하려면 단순히 Container가 실행되고 있는 것만으로는 충분하지 않습니다.
Container는 실행 중이지만 실제 서비스가 정상적으로 동작하지 않는 상황이 발생할 수 있습니다.
예:
Container 실행
↓
Application 내부 오류 발생
↓
Process는 살아있음
↓
사용자 요청 실패
이 문제를 해결하기 위해 Kubernetes는 Health Check 기능을 제공합니다.
Kubernetes Probe는 Application 상태를 지속적으로 확인하고 문제가 발생하면 자동으로 조치합니다.
| 구성 요소 | 역할 |
|---|---|
| Liveness Probe | Container 재시작 판단 |
| Readiness Probe | Traffic 전달 여부 판단 |
| Startup Probe | 초기 실행 상태 확인 |
| kubelet | Health Check 실행 |
| Service | 정상 Pod 연결 |
Health Check 구조를 이해하면 Kubernetes에서 Self-Healing Application 운영이 가능합니다.
Kubernetes Health Check란?
Health Check는 Kubernetes가 Application 상태를 확인하는 기능입니다.
기본 Container 상태:
Running
↓
정상 판단
하지만 실제:
Process 실행
↓
Application 내부 오류
↓
서비스 불가능
상태가 발생할 수 있습니다.
Probe를 통해 실제 서비스 상태를 확인합니다.
Kubernetes Probe 종류
Kubernetes는 세 가지 Probe를 제공합니다.
| Probe | 목적 |
|---|---|
| Liveness Probe | 살아있는지 확인 |
| Readiness Probe | Traffic 처리 가능 여부 확인 |
| Startup Probe | 초기 시작 완료 확인 |
각각 다른 목적을 가지고 있습니다.
Kubernetes Liveness Probe
Liveness Probe는 Container가 정상적으로 살아있는지 확인합니다.
예:
Application Deadlock 발생
↓
응답 없음
↓
Liveness Probe 실패
↓
Container 재시작
자동 복구 기능입니다.
Kubernetes Readiness Probe
Readiness Probe는 Traffic을 받을 준비가 되었는지 확인합니다.
예:
Application 시작 중
↓
Database 연결 대기
↓
Ready 상태 아님
↓
Service Traffic 차단
준비가 완료되면 Traffic을 전달합니다.
Kubernetes Startup Probe
Startup Probe는 시작 시간이 오래 걸리는 Application을 위한 기능입니다.
예:
Java Application
↓
10분 초기화 필요
↓
Liveness Probe 실행
↓
잘못된 재시작 발생 가능
Startup Probe를 사용하면 초기 실행 시간을 보호할 수 있습니다.
Kubernetes Probe 동작 구조
전체 흐름:
kubelet
↓
Probe 실행
↓
Application 확인
↓
상태 판단
↓
Restart 또는 Traffic 제어
Worker Node의 kubelet이 직접 확인합니다.
Kubernetes Probe 방식
Health Check 방법:
| 방식 | 설명 |
|---|---|
| HTTP Probe | HTTP 응답 확인 |
| TCP Probe | Port 연결 확인 |
| Exec Probe | Command 실행 확인 |
Application 특성에 맞게 선택합니다.
Kubernetes HTTP Probe 예시
livenessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 10
periodSeconds: 5
HTTP Endpoint를 통해 상태를 확인합니다.
Kubernetes Readiness Probe 설정 예시
readinessProbe:
httpGet:
path: /ready
port: 8080
initialDelaySeconds: 5
periodSeconds: 10
Ready 상태가 아니면 Service Endpoint에서 제외됩니다.
Kubernetes Probe 실패 처리
Liveness 실패:
↓
Container Restart
Readiness 실패:
↓
Traffic 제거
Startup 실패:
↓
Container Restart
Probe 종류에 따라 처리 방식이 다릅니다.
Kubernetes Probe와 Service 관계
중요한 차이입니다.
Readiness Probe 실패:
Pod 실행 유지
↓
Service Endpoint 제거
Liveness Probe 실패:
Pod 재시작
서비스 안정성을 위해 역할이 분리됩니다.
Kubernetes Health Check 장애 사례
잘못된 Probe 설정
예:
Application 시작 시간:
120초
Probe 시작:
10초
결과:
정상 Application 종료
Startup Probe가 필요합니다.
잘못된 Endpoint 설정
Probe:
/health
실제:
/status
결과:
Health Check 실패
Application Endpoint 확인이 필요합니다.
Kubernetes Probe Timeout 관리
설정 항목:
- initialDelaySeconds
- periodSeconds
- timeoutSeconds
- failureThreshold
- successThreshold
잘못 설정하면 불필요한 Restart가 발생합니다.
Kubernetes Health Check와 Self Healing
Kubernetes 핵심 기능:
문제 감지
↓
상태 판단
↓
자동 조치
↓
정상 상태 복구
Self-Healing Architecture의 기본입니다.
Kubernetes Probe 운영 전략
Production 환경:
1단계
Health Endpoint 개발
↓
2단계
Readiness 적용
↓
3단계
Liveness 적용
↓
4단계
Startup 적용
↓
5단계
Monitoring 연결
점진적으로 적용하는 것이 안정적입니다.
Kubernetes Health Check Monitoring
확인 항목:
- Probe 실패 횟수
- Container Restart Count
- Pod Ready 상태
- Application Error
운영 환경에서 반드시 확인해야 합니다.
Kubernetes Health Check와 장애 분석
확인 명령어:
Pod 상태:
kubectl get pods
상세 확인:
kubectl describe pod pod-name
Restart 확인:
kubectl get pod pod-name
Event를 통해 원인을 분석합니다.
Kubernetes Health Check 장점
| 장점 | 설명 |
|---|---|
| 자동 복구 | 장애 Container 재시작 |
| Traffic 보호 | 비정상 Pod 제외 |
| 서비스 안정성 | 장애 확산 방지 |
| 운영 자동화 | 수동 대응 감소 |
Health Check는 Kubernetes 운영의 핵심 기능입니다.
자주 묻는 질문
Liveness와 Readiness 차이는 무엇인가요?
Liveness는 Container 재시작 판단, Readiness는 Traffic 전달 여부 판단입니다.
Probe가 실패하면 Pod가 삭제되나요?
Liveness 실패 시 Container가 재시작되고 Readiness 실패 시 Traffic만 제거됩니다.
모든 Application에 Health Check가 필요한가요?
Production 환경에서는 대부분 적용하는 것이 좋습니다.
마무리
Kubernetes Health Check는 Application 상태를 자동으로 확인하고 장애 상황에서 안정적으로 대응하는 핵심 기능입니다.
| 구성 요소 | 역할 |
|---|---|
| Liveness Probe | Container 재시작 |
| Readiness Probe | Traffic 제어 |
| Startup Probe | 초기 실행 보호 |
| kubelet | 상태 검사 |
Health Check 구조를 이해하면 Kubernetes의 Self-Healing과 안정적인 Production 운영 환경을 구축할 수 있습니다.
다음 글에서는 Kubernetes 장애 분석 영역인 Kubernetes Troubleshooting 완벽 가이드! Pod 오류 원인 분석과 장애 해결 방법 이해하기를 진행하겠습니다.