Kubernetes 환경에서 Application을 안정적으로 운영하기 위해서는 Container 상태를 지속적으로 확인하는 기능이 필요합니다.
Container가 실행 중이라고 해서 항상 정상적인 서비스 상태를 의미하는 것은 아닙니다.
예를 들어 Application 내부 오류가 발생했거나 Database 연결 문제가 발생하면 Container는 실행 중이지만 실제 서비스는 정상적으로 동작하지 않을 수 있습니다.
Kubernetes에서는 이러한 문제를 해결하기 위해 Probe라는 Health Check 기능을 제공합니다.
| 구성 요소 | 역할 |
|---|---|
| Liveness Probe | Container 정상 동작 여부 확인 |
| Readiness Probe | 서비스 요청 처리 가능 여부 확인 |
| Startup Probe | Application 초기 실행 상태 확인 |
| Kubelet | Health Check 수행 |
Health Check 기능을 활용하면 Kubernetes가 비정상적인 Container를 자동으로 복구하고 안정적인 서비스를 유지할 수 있습니다.
Kubernetes Probe란 무엇인가?
Probe는 Kubernetes가 Container 상태를 확인하기 위한 Health Check 기능입니다.
Kubernetes의 Kubelet은 주기적으로 Probe를 실행하여 Container 상태를 확인합니다.
상태 확인 결과에 따라 Kubernetes는 자동으로 필요한 작업을 수행합니다.
| 상태 | 동작 |
|---|---|
| 정상 상태 | 서비스 유지 |
| 비정상 상태 | 재시작 또는 Traffic 제거 |
| 준비되지 않음 | 요청 전달 중지 |
Probe는 Production 환경에서 장애 대응과 서비스 안정성을 높이는 중요한 기능입니다.
Kubernetes Liveness Probe란?
Liveness Probe는 Container가 정상적으로 실행되고 있는지 확인하는 기능입니다.
Application이 멈추거나 응답하지 않는 상태가 되면 Kubernetes는 해당 Container를 재시작합니다.
예:
| 상황 | 동작 |
|---|---|
| Application 정상 실행 | 서비스 유지 |
| Application Deadlock 발생 | Container 재시작 |
| Process 오류 발생 | 자동 복구 |
Liveness Probe는 Application 자체의 장애를 감지하는 역할을 합니다.
Kubernetes Readiness Probe란?
Readiness Probe는 Container가 사용자 요청을 받을 준비가 되었는지 확인하는 기능입니다.
Container가 실행 중이어도 초기 설정이나 Database 연결이 완료되지 않았다면 Traffic을 받으면 안 됩니다.
예:
| 상황 | 동작 |
|---|---|
| Application 준비 완료 | Traffic 전달 |
| Database 연결 실패 | Traffic 차단 |
| 초기 실행 중 | 요청 대기 |
Readiness Probe는 서비스 품질을 유지하기 위한 중요한 기능입니다.
Kubernetes Startup Probe란?
Startup Probe는 Application 시작 시간이 오래 걸리는 환경에서 사용하는 Health Check 기능입니다.
대규모 Application이나 초기 데이터 로딩이 필요한 서비스에서는 시작 시간이 길어질 수 있습니다.
Startup Probe가 필요한 이유:
| 문제 | 해결 |
|---|---|
| 초기 실행 지연 | 충분한 시작 시간 제공 |
| 잘못된 재시작 방지 | Liveness 검사 지연 |
| 대형 Application 지원 | 안정적인 실행 가능 |
Startup Probe가 성공하면 이후 Liveness와 Readiness Probe가 정상적으로 동작합니다.
Kubernetes Probe 동작 구조
Probe는 Kubelet이 주기적으로 실행합니다.
구조:
| 구성 요소 | 역할 |
|---|---|
| Kubelet | Probe 실행 |
| Probe 설정 | Health Check 기준 |
| Container | 상태 확인 대상 |
| Kubernetes Controller | 복구 처리 |
동작 과정:
| 단계 | 내용 |
|---|---|
| 1단계 | Kubelet이 Container 확인 |
| 2단계 | Probe 실행 |
| 3단계 | 상태 결과 확인 |
| 4단계 | 필요한 조치 수행 |
이 구조를 통해 Kubernetes는 Application 상태를 자동으로 관리합니다.
Kubernetes Probe 검사 방식
Kubernetes는 여러 방식으로 Container 상태를 확인할 수 있습니다.
| 방식 | 설명 |
|---|---|
| HTTP Probe | HTTP 응답 확인 |
| TCP Probe | Port 연결 확인 |
| Command Probe | 명령어 실행 결과 확인 |
사용 환경에 따라 적절한 검사 방식을 선택합니다.
예:
| Application | 추천 방식 |
|---|---|
| Web Server | HTTP Probe |
| Database | TCP Probe |
| Custom Application | Command Probe |
Kubernetes HTTP Probe 구성
HTTP Probe는 Web Application Health Check에서 가장 많이 사용됩니다.
확인 항목:
| 항목 | 설명 |
|---|---|
| Endpoint | Health Check URL |
| Port | 서비스 Port |
| Status Code | 응답 상태 확인 |
예:
| 응답 | 결과 |
|---|---|
| HTTP 200 | 정상 |
| HTTP 오류 | 비정상 |
Web Application에서는 일반적으로 /health 같은 Health Check Endpoint를 제공합니다.
Kubernetes Probe 설정 주요 항목
Probe 설정에는 다양한 옵션이 있습니다.
| 설정 | 설명 |
|---|---|
| initialDelaySeconds | 검사 시작 대기 시간 |
| periodSeconds | 검사 주기 |
| timeoutSeconds | 응답 제한 시간 |
| failureThreshold | 실패 판단 횟수 |
| successThreshold | 성공 판단 기준 |
적절한 값을 설정해야 불필요한 Container 재시작을 방지할 수 있습니다.
Kubernetes Liveness와 Readiness 차이
두 기능은 비슷해 보이지만 목적이 다릅니다.
| 구분 | Liveness Probe | Readiness Probe |
|---|---|---|
| 목적 | Container 정상 여부 확인 | Traffic 처리 가능 여부 확인 |
| 문제 발생 시 | Container 재시작 | Traffic 제거 |
| 대상 | Application 상태 | 서비스 준비 상태 |
Liveness는 “살아있는가”를 확인하고 Readiness는 “서비스 가능한 상태인가”를 확인합니다.
Kubernetes Health Check 운영 시 고려사항
Production 환경에서는 Probe 설정을 신중하게 구성해야 합니다.
| 항목 | 설명 |
|---|---|
| 검사 주기 | 너무 짧으면 불필요한 부하 발생 |
| Timeout 설정 | 응답 시간 고려 필요 |
| 초기 지연 | Application 시작 시간 반영 |
| 장애 기준 | 서비스 특성에 맞게 설정 |
잘못된 Probe 설정은 정상적인 Application까지 재시작시키는 문제가 발생할 수 있습니다.
Kubernetes Health Check 장점
| 장점 | 설명 |
|---|---|
| 자동 복구 | 비정상 Container 재시작 |
| 서비스 안정성 | 장애 Traffic 차단 |
| 운영 자동화 | 수동 확인 감소 |
| 가용성 향상 | 서비스 유지 가능 |
Health Check는 Kubernetes 운영 환경에서 필수적인 안정성 기능입니다.
자주 묻는 질문
Liveness Probe와 Readiness Probe를 둘 다 사용해야 하나요?
Production 환경에서는 대부분 두 기능을 함께 사용하여 Container 상태와 서비스 가능 상태를 각각 관리합니다.
Probe 실패하면 Container가 삭제되나요?
Liveness Probe 실패 시 Kubernetes는 Container를 재시작합니다.
Readiness Probe 실패 시에는 Traffic 전달만 중단됩니다.
Health Check 설정이 중요한 이유는 무엇인가요?
장애 상황을 빠르게 감지하고 자동 복구하여 서비스 안정성을 유지하기 위해 필요합니다.
마무리
Kubernetes Health Check 기능은 Application 상태를 자동으로 확인하고 장애 상황에 대응하는 핵심 기능입니다.
| 구성 요소 | 역할 |
|---|---|
| Liveness Probe | Container 재시작 판단 |
| Readiness Probe | Traffic 전달 여부 결정 |
| Startup Probe | 초기 실행 상태 확인 |
| Kubelet | Health Check 수행 |
Probe 기능을 활용하면 Kubernetes 환경에서 Application 장애를 자동으로 감지하고 안정적인 서비스를 운영할 수 있습니다.
다음 글에서는 Kubernetes 작업 자동화와 Batch 처리를 위한 Kubernetes Job과 CronJob 완벽 가이드! 일회성 작업과 예약 실행 구조 이해하기를 알아보겠습니다.