Kubernetes Health Check 완벽 가이드! Liveness와 Readiness Probe 구조 이해하기

Kubernetes 환경에서 Application을 안정적으로 운영하기 위해서는 Container가 정상적으로 실행되고 있는지 지속적으로 확인해야 합니다.

Container가 실행 중이라고 해서 항상 정상적인 상태는 아닙니다.

예를 들어 Application Process는 실행되고 있지만 내부 오류로 요청을 처리하지 못하는 상황이 발생할 수 있습니다.

Kubernetes에서는 이러한 문제를 해결하기 위해 Health Check 기능을 제공합니다.

Health Check는 Probe를 이용하여 Container 상태를 확인하고 문제가 발생하면 자동으로 복구하거나 Traffic 전달을 조절하는 기능입니다.

구성 요소역할
Liveness ProbeContainer 정상 실행 여부 확인
Readiness ProbeTraffic 처리 가능 상태 확인
Startup ProbeApplication 초기 실행 확인
KubeletHealth Check 수행

Health Check를 활용하면 Kubernetes 환경에서 서비스 가용성을 높이고 장애 대응을 자동화할 수 있습니다.

Kubernetes Health Check란 무엇인가?

Kubernetes Health Check는 Container의 현재 상태를 확인하는 기능입니다.

Kubelet은 정해진 주기에 따라 Probe를 실행하고 결과에 따라 필요한 작업을 수행합니다.

예:

Application 상태:

Process 실행 중

하지만

Database 연결 오류 발생

결과:

Container 실행 상태 확인

Liveness Probe 실패

Container 재시작

이처럼 Kubernetes는 단순히 Process 실행 여부가 아니라 Application 상태를 관리합니다.

Kubernetes Probe란?

Probe는 Kubernetes가 Container 상태를 확인하기 위해 사용하는 검사 방식입니다.

Kubelet이 Container에 특정 요청을 보내고 결과를 판단합니다.

Probe 종류:

Probe목적
Liveness Probe살아있는지 확인
Readiness Probe요청 처리 가능 여부 확인
Startup Probe초기 실행 완료 확인

각 Probe는 서로 다른 목적을 가지고 있습니다.

Kubernetes Liveness Probe란?

Liveness Probe는 Container가 정상적으로 동작하고 있는지 확인하는 기능입니다.

실패하면 Kubernetes는 해당 Container를 재시작합니다.

예:

Application Deadlock 발생

Liveness Probe 실패

Kubelet Container 재시작

주요 활용:

상황처리
Process 멈춤재시작
응답 없음복구
Deadlock 발생Container 교체

Liveness Probe는 자동 복구 기능의 핵심입니다.

Kubernetes Readiness Probe란?

Readiness Probe는 Container가 Traffic을 받을 준비가 되었는지 확인합니다.

실행 중이지만 요청 처리가 불가능한 상태라면 Service Endpoint에서 제외합니다.

예:

Application 시작 중

Readiness Probe 실패

Traffic 전달 중단

정상화:

Application 준비 완료

Endpoint 추가

Traffic 전달 시작

서비스 중단을 줄이는 중요한 기능입니다.

Kubernetes Startup Probe란?

Startup Probe는 Application 초기 실행 시간이 긴 경우 사용하는 Health Check입니다.

초기 실행이 오래 걸리는 Application에서 Liveness Probe가 너무 빠르게 실패하는 문제를 방지합니다.

예:

대규모 Java Application

실행 시간:

120초

Startup Probe 적용:

초기 실행 완료까지 대기

이후:

Liveness Probe 시작

초기화 과정이 긴 Application에서 유용합니다.

Kubernetes Probe 동작 방식

Kubernetes Probe는 다양한 검사 방식을 제공합니다.

방식설명
HTTP GETHTTP 응답 확인
TCP SocketPort 연결 확인
Exec Command명령 실행 결과 확인

예:

HTTP Health Endpoint 확인:

/health

응답:

200 OK

정상 상태 판단

Kubernetes HTTP Probe 구조

HTTP Probe는 Application의 특정 URL을 호출하여 상태를 확인합니다.

구조:

Kubelet

HTTP Request

Application Health Endpoint

결과:

응답상태
200~399정상
실패 응답비정상

Web Application에서 가장 많이 사용하는 방식입니다.

Kubernetes TCP Probe 구조

TCP Probe는 특정 Port가 열려 있는지 확인합니다.

예:

Database Port 확인

3306 Port 연결 가능

정상

장점:

장점설명
간단함설정 쉬움
Application 수정 불필요별도 Endpoint 필요 없음

Network 기반 확인이 필요한 경우 사용합니다.

Kubernetes Exec Probe 구조

Exec Probe는 Container 내부에서 명령어를 실행하여 상태를 확인합니다.

예:

명령 실행:

check-status.sh

결과:

Exit Code 0

정상

특수한 Application Health Check에 활용됩니다.

Kubernetes Probe 주요 설정

Probe는 다양한 옵션을 제공합니다.

설정설명
initialDelaySeconds첫 검사 대기 시간
periodSeconds검사 주기
timeoutSeconds응답 대기 시간
failureThreshold실패 기준 횟수
successThreshold성공 기준 횟수

적절한 설정이 중요합니다.

Kubernetes Liveness와 Readiness 차이

두 Probe는 목적이 다릅니다.

구분LivenessReadiness
목적Container 복구Traffic 제어
실패 시재시작Traffic 제거
확인 대상실행 상태서비스 가능 상태
영향ContainerService 연결

두 기능을 함께 사용하는 것이 일반적입니다.

Kubernetes Health Check 활용 사례

Application사용 Probe
Web ServerHTTP Probe
DatabaseTCP Probe
Batch ApplicationExec Probe
초기 실행 긴 서비스Startup Probe

Application 특성에 맞는 Probe 설정이 필요합니다.

Kubernetes Health Check 운영 시 고려사항

잘못된 Health Check 설정은 오히려 서비스 장애를 발생시킬 수 있습니다.

항목설명
검사 주기너무 짧지 않게 설정
Timeout응답 시간 고려
초기 지연Application 시작 시간 반영
Endpoint 설계정확한 상태 확인

Production 환경에서는 테스트 후 적용하는 것이 중요합니다.

Kubernetes Health Check 장점

장점설명
자동 복구문제 Container 재시작
서비스 안정성비정상 Traffic 차단
장애 감소빠른 대응 가능
운영 자동화수동 확인 감소

Health Check는 Kubernetes 운영 안정성을 높이는 핵심 기능입니다.

자주 묻는 질문

Liveness와 Readiness Probe 차이는 무엇인가요?

Liveness는 Container가 정상 실행 중인지 확인하고 Readiness는 Traffic을 받을 준비가 되었는지 확인합니다.

Probe 실패하면 Container가 바로 종료되나요?

Liveness Probe 실패 시 설정된 조건에 따라 Container가 재시작됩니다.

모든 Application에 Health Check가 필요한가요?

Production 환경에서는 안정적인 운영을 위해 대부분 적용하는 것이 좋습니다.

마무리

Kubernetes Health Check는 Container 상태를 확인하고 Application 안정성을 유지하는 핵심 기능입니다.

구성 요소역할
Liveness ProbeContainer 자동 복구
Readiness ProbeTraffic 제어
Startup Probe초기 실행 보호
KubeletProbe 실행 관리

Health Check를 적절하게 구성하면 Kubernetes 환경에서 Application 장애를 빠르게 감지하고 안정적인 서비스를 운영할 수 있습니다.

다음 글에서는 Kubernetes 작업 자동화와 Batch 처리를 위한 Kubernetes Job과 CronJob 심화 가이드! 예약 실행과 작업 관리 구조 이해하기를 알아보겠습니다.

댓글 남기기