Kubernetes 환경에서 Application을 안정적으로 운영하려면 Container가 정상적으로 실행되고 있는지 지속적으로 확인해야 합니다.
Container Process가 실행 중이라고 해서 항상 정상적인 상태는 아닙니다.
예를 들어 Web Application이 실행되고 있지만 Database 연결 오류로 요청을 처리하지 못하거나, 내부 오류로 응답하지 않는 상황이 발생할 수 있습니다.
Kubernetes에서는 이러한 문제를 해결하기 위해 Probe 기능을 제공합니다.
Probe는 Container 상태를 주기적으로 확인하고 문제가 발생하면 자동으로 복구하거나 Traffic 전달을 조절하는 Health Check 기능입니다.
| 구성 요소 | 역할 |
|---|---|
| Liveness Probe | Container 정상 실행 확인 |
| Readiness Probe | Traffic 처리 가능 상태 확인 |
| Startup Probe | 초기 실행 상태 확인 |
| Kubelet | Health Check 수행 |
Kubernetes Probe 구조를 이해하면 Application 장애를 자동 감지하고 안정적인 Service 운영 환경을 구축할 수 있습니다.
Kubernetes Probe란 무엇인가?
Probe는 Kubernetes가 Container 상태를 확인하기 위해 사용하는 검사 기능입니다.
Kubelet은 설정된 주기에 따라 Container를 검사하고 결과에 따라 필요한 작업을 수행합니다.
예:
Application 실행
↓
Health Check 수행
↓
정상 상태 확인
↓
Traffic 제공
또는
Application 오류 발생
↓
Probe 실패
↓
Container 재시작 또는 Traffic 제거
이처럼 Kubernetes는 Container 상태를 자동으로 관리합니다.
Kubernetes Health Check가 필요한 이유
Container가 실행 중이어도 Application 내부 문제가 발생할 수 있습니다.
문제:
| 상황 | 문제 |
|---|---|
| Process 실행 중 | 서비스 응답 불가 |
| Memory 문제 | Application 멈춤 |
| Database 연결 실패 | 요청 처리 불가 |
| 초기 실행 지연 | 잘못된 장애 판단 |
Probe는 이러한 상태를 구분하여 안정적인 운영을 지원합니다.
Kubernetes Probe 동작 구조
Probe는 Kubelet이 실행하며 Container 상태를 확인합니다.
구조:
| 구성 요소 | 역할 |
|---|---|
| Kubelet | Probe 실행 |
| Container | Health Check 대상 |
| Application | 상태 응답 제공 |
| Controller | 필요한 조치 수행 |
동작 과정:
| 단계 | 내용 |
|---|---|
| 1단계 | Kubelet Probe 실행 |
| 2단계 | Container 상태 확인 |
| 3단계 | 결과 판단 |
| 4단계 | 재시작 또는 Traffic 제어 |
| 5단계 | 서비스 상태 유지 |
Kubernetes Liveness Probe란?
Liveness Probe는 Container가 정상적으로 살아있는지 확인하는 기능입니다.
비정상 상태가 지속되면 Kubernetes는 Container를 재시작합니다.
예:
Application Deadlock 발생
↓
Liveness Probe 실패
↓
Kubernetes Container 재시작
주요 목적:
| 상황 | 처리 |
|---|---|
| Process 멈춤 | 재시작 |
| 응답 없음 | 복구 |
| Deadlock 발생 | Container 교체 |
자동 복구 기능의 핵심입니다.
Kubernetes Readiness Probe란?
Readiness Probe는 Container가 Traffic을 받을 준비가 되었는지 확인합니다.
Container는 실행 중이지만 요청 처리가 불가능한 상태라면 Service Endpoint에서 제외합니다.
예:
Application 시작 중
↓
Readiness 실패
↓
Traffic 전달 중단
Application 준비 완료
↓
Endpoint 추가
↓
Traffic 전달 시작
서비스 중단을 줄이는 중요한 기능입니다.
Kubernetes Startup Probe란?
Startup Probe는 Application 초기 실행 시간이 긴 경우 사용하는 Health Check입니다.
초기 실행이 오래 걸리는 Application에서 Liveness Probe가 너무 빠르게 실패하는 문제를 방지합니다.
예:
대규모 Java Application 실행
↓
Startup Probe 검사
↓
초기화 완료
↓
Liveness Probe 시작
초기 Loading 시간이 긴 Application에 적합합니다.
Kubernetes Probe 검사 방식
Kubernetes는 여러 가지 Health Check 방식을 제공합니다.
| 방식 | 설명 |
|---|---|
| HTTP GET | HTTP Endpoint 확인 |
| TCP Socket | Port 연결 확인 |
| Exec Command | Container 내부 명령 실행 |
Application 특성에 따라 선택합니다.
Kubernetes HTTP Probe 구조
HTTP Probe는 Application의 특정 URL을 호출하여 상태를 확인합니다.
구조:
Kubelet
↓
HTTP Request
↓
Application Health Endpoint
↓
응답 확인
예:
/health
응답:
200 OK
정상 상태 판단
Web Application에서 가장 많이 사용하는 방식입니다.
Kubernetes TCP Probe 구조
TCP Probe는 특정 Port가 정상적으로 열려 있는지 확인합니다.
예:
Database Port:
3306
확인:
Port 연결 가능
↓
정상
Application 수정 없이 Network 상태를 확인할 수 있습니다.
Kubernetes Exec Probe 구조
Exec Probe는 Container 내부에서 명령어를 실행하여 상태를 확인합니다.
예:
명령:
check-health.sh
결과:
Exit Code 0
↓
정상
특수한 Application Health Check에서 활용됩니다.
Kubernetes Probe 주요 설정
Probe는 다양한 옵션으로 동작 방식을 조절할 수 있습니다.
| 설정 | 설명 |
|---|---|
| initialDelaySeconds | 첫 검사 대기 시간 |
| periodSeconds | 검사 주기 |
| timeoutSeconds | 응답 대기 시간 |
| failureThreshold | 실패 판단 횟수 |
| successThreshold | 성공 판단 횟수 |
Application 특성에 맞게 설정해야 합니다.
Kubernetes Liveness와 Readiness 차이
두 Probe는 목적이 다릅니다.
| 구분 | Liveness | Readiness |
|---|---|---|
| 목적 | Container 복구 | Traffic 제어 |
| 실패 결과 | Container 재시작 | Endpoint 제거 |
| 대상 | 실행 상태 | 서비스 가능 상태 |
| 사용 목적 | 장애 복구 | 서비스 안정화 |
Production 환경에서는 두 가지를 함께 사용하는 경우가 많습니다.
Kubernetes Probe와 Deployment 관계
Probe는 Deployment와 함께 사용되어 Application 안정성을 높입니다.
구조:
Deployment
↓
Pod 생성
↓
Probe 실행
↓
상태 확인
↓
자동 복구
Kubernetes는 Application 상태를 지속적으로 관리합니다.
Kubernetes Probe 활용 사례
| Application | 추천 Probe |
|---|---|
| Web Server | HTTP Probe |
| Database | TCP Probe |
| Batch Application | Exec Probe |
| 대규모 Application | Startup Probe |
Application 특성에 맞는 Health Check 설계가 중요합니다.
Kubernetes Probe 운영 시 고려사항
잘못된 Probe 설정은 정상 Application을 재시작시키는 문제가 발생할 수 있습니다.
| 항목 | 설명 |
|---|---|
| 검사 주기 | 과도한 요청 방지 |
| 초기 지연 | 실행 시간 고려 |
| Timeout | 응답 시간 반영 |
| 실패 기준 | 서비스 특성 고려 |
Production 환경에서는 충분한 테스트가 필요합니다.
Kubernetes Probe 장애 상황
Probe 설정 오류는 Application 장애처럼 보일 수 있습니다.
예:
설정 오류
↓
Probe 실패
↓
Container 반복 재시작
↓
서비스 영향
따라서 Monitoring과 함께 관리해야 합니다.
Kubernetes Probe 장점
| 장점 | 설명 |
|---|---|
| 자동 복구 | 비정상 Container 재시작 |
| Traffic 보호 | 준비되지 않은 Pod 차단 |
| 장애 감지 | 빠른 문제 확인 |
| 운영 자동화 | 수동 확인 감소 |
Probe는 Kubernetes Application 운영 안정성을 높이는 핵심 기능입니다.
자주 묻는 질문
Liveness와 Readiness Probe 차이는 무엇인가요?
Liveness는 Container가 정상 실행 중인지 확인하고 Readiness는 Traffic을 받을 준비가 되었는지 확인합니다.
Probe 실패하면 Container가 바로 종료되나요?
아닙니다.
설정된 failureThreshold 조건을 만족해야 재시작 또는 제외 작업이 수행됩니다.
모든 Application에 Probe가 필요한가요?
Production 환경에서는 안정적인 운영을 위해 대부분 적용하는 것이 권장됩니다.
마무리
Kubernetes Probe는 Container 상태를 확인하고 Application 안정성을 유지하는 핵심 Health Check 기능입니다.
| 구성 요소 | 역할 |
|---|---|
| Liveness Probe | 자동 복구 |
| Readiness Probe | Traffic 관리 |
| Startup Probe | 초기 실행 보호 |
| Kubelet | Health Check 실행 |
Probe 구조를 이해하면 Kubernetes 환경에서 Application 장애를 빠르게 감지하고 자동 복구하는 안정적인 운영 구조를 구축할 수 있습니다.
다음 글에서는 Kubernetes Application 배치와 업데이트 전략을 위한 Kubernetes Deployment 완벽 가이드! Replica 관리와 Rolling Update 구조 이해하기를 알아보겠습니다.