본문 바로가기
DevOps/Kubernetes

쿠버네티스 - (ReadinessProbe, LivenessProbe)

by 재성스 2024. 10. 30.
반응형

프로브(probe)란? 어떤 상태나 정보를 확인하기 위해 탐색하는 행위 또는 장치를 뜻한다. 마찬가지로, kubernetes에서 프로브는 컨테이너의 상태를 감시하여 컨테이너가 정상인지, 준비가 되었는지를 확인하는 검사 메커니즘을 의미한다. 

kubernetes의 프로브 유형에는 ReadinessProbe과 LivenessProbe가 있으며, 두 프로브 간에 역할과 차이점은 다음과 같다.

 

ReadinessProbe: 서비스 요청을 받을 준비가 되었는지 검사

ReadinessProbe는 컨테이너가 서비스 요청을 받을 준비가 되었는지를 확인한다. 컨테이너가 준비되지 않은 상태에서 트래픽이 전달되면 오류가 발생할 수 있기 때문에, ReadinessProbe는 준비 완료 상태가 될 때까지 트래픽을 차단해 준다. 

동작 흐름

  • ReadinessProbe는 컨테이너가 정상적으로 트래픽을 처리할 준비가 되었는지 확인한다.
  • 만약 준비 상태가 아닌 경우, Kubernetes는 해당 파드를 서비스 엔드포인트에서 제외하여 트래픽이 전달되지 않도록 한다. 
  • 준비 상태가 되면 파드를 다시 서비스에 포함시켜 트래픽을 받을 수 있도록 한다.

 

LivenessProbe: 컨테이너가 정상적으로 작동 중인지 검사

LivenessProbe는 컨테이너가 정상적으로 작동 중인지를 확인한다. 만약 컨테이너가 멈추가나 비정상적으로 작동하면 Kubernetes는 LivenessProbe를 통해 이를 감지하고 컨테이너를 재시작하여 문제를 해결한다.

동작 흐름

  • LivenessProbe는 컨테이너가 정상적으로 동작 중인지 확인한다.
  • 문제가 발생하여 컨테이너가 비정상 상태로 감지되면 Kubernetes는 해당 컨테이너를 재시작한다.
  • LivenessProbe를 통해 비정상 컨테이너를 신속하게 복구하여 서비스 안정성을 유지한다.

 

ReadinessProbe와 LivenessProbe 설정 방식

HTTP 요청을 통한 검사

  • 컨테이너가 HTTP 엔드포인트를 통해 정상 동작하는지 확인한다.
  • HTTP 상태 코드가 200이면 정상으로 판단한다.

TCP 소켓을 통한 검사

  • 특정 포트로의 TCP 연결여부로 상태를 확인한다.
  • 연결이 성공하면 정상으로 간주하고, 실패하면 비정상으로 판단한다.

커맨드 실행을 통한 검사

  • 컨테이너 내부에서 특정 명령어를 실행하여 그 결과로 상태를 확인
  • 명령어가 정상 종료되면 상태를 정상으로, 실패하면 비정상으로 판단

 

ReadinessProbe 예시

apiVersion: v1
kind: Pod
metadata:
  name: readiness-probe-example
spec:
  containers:
  - name: app-container
    image: myapp:latest
    readinessProbe:
      httpGet:
        path: /health
        port: 8080
      initialDelaySeconds: 5
      periodSeconds: 10

- 위 예시에서 ReadinessProbe는 /health 엔드포인트에 HTTP 요청을 보내고, 응답이 정상(200)인지 확인한다. initialDelaySeconds는 프로브가 시작되기 전 대기 시간을, periodSeconds는 프로브 간격을 설정한다.

LivenessProbe 예시 

apiVersion: v1
kind: Pod
metadata:
  name: liveness-probe-example
spec:
  containers:
  - name: app-container
    image: myapp:latest
    livenessProbe:
      exec:
        command: ["sh", "-c", "pgrep myapp || exit 1"]
      initialDelaySeconds: 5
      periodSeconds: 10

- 위 LivenessProbe는 pgrep 명령어로 myapp 프로세스를 확인한다. 프로세스가 실행 중이지 않으면 exit 1로 실패 상태가 되며, kubernetes는 컨테이너를 재시작한다.

 

두 Probe 간 차이 비교

프로브 종류 설명  동작 방식 목적
ReadinessProbe 컨테이너가 요청을 받을 준비가 되었는지 검사 요청 실패 시 트래픽을 차단하여 준비 상태가 될 때까지 대기 준비되지 않은 파드에 트래픽 차단
LivenessProbe 컨테이너가 정상적으로 동작 중인지 검사 요청 실패 시 컨테이너를 재시작 비정상 컨테이너를 신속히 복구하여 서비스 안정성 유지

 

반응형