Liveness Probe, Readiness Probe, Startup Probe: 컨테이너의 상태 체크를 위한 Kubernetes Probe

IMKUNYOUNG·2023년 7월 11일
0

쿠버네티스

목록 보기
15/64
post-thumbnail

쿠버네티스(Kubernetes)에서는 컨테이너의 상태 체크를 위해 Liveness Probe, Readiness Probe, Startup Probe를 제공합니다. 이러한 Probes는 컨테이너의 상태를 모니터링하고 필요에 따라 자동으로 컨테이너를 재시작하거나 트래픽 전달을 제어하는 등의 작업을 수행합니다. 이번 글에서는 Liveness Probe, Readiness Probe, Startup Probe에 대해 상세히 알아보겠습니다.

Liveness Probe

Liveness Probe는 컨테이너가 정상적으로 실행 중인지를 확인하기 위한 프로브입니다. 이는 컨테이너 내부에서 실행되는 애플리케이션의 상태를 주기적으로 확인하여 문제가 발생할 경우 컨테이너를 재시작합니다. Liveness Probe는 애플리케이션이 정상적인 상태를 유지하는지 확인하는 데 사용됩니다.

일반적으로 HTTP 요청, TCP 소켓 연결, 명령어 실행 등의 방법으로 Liveness Probe를 구성할 수 있습니다. 예를 들어, HTTP Liveness Probe의 경우 /health 엔드포인트로 주기적인 HTTP GET 요청을 보내고, 해당 엔드포인트가 응답을 성공적으로 반환하면 컨테이너가 정상적으로 실행 중인 것으로 판단합니다. Liveness Probe가 실패할 경우, 컨테이너는 재시작되거나 다른 액션을 취할 수 있습니다.

Liveness Probe는 Pod의 spec 섹션에 정의되며, initialDelaySeconds, periodSeconds, timeoutSeconds, failureThreshold 등의 옵션을 설정하여 Probe의 동작을 조정할 수 있습니다.

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
    - name: my-container
      image: my-image
      livenessProbe:
        httpGet:
          path: /health
          port: 8080
        initialDelaySeconds: 10
        periodSeconds: 5

위의 예시에서는 /health 엔드포인트로 HTTP GET 요청을 주기적으로 보내고, 컨테이너가 시작된 후 10초 뒤부터 Probe가 시작됩니다. Probe는 5초마다 주기적으로 수행되며, 응답이 오는지 확인합니다.

Readiness Probe

Readiness Probe는 컨테이너가 클라이언트 트래픽을 받을 준비가 되었는지 확인하기 위한 프로브입니다. 일반적으로 애플리케이션이 초기화되고 필요한 리소스를 로드한 후에 Readiness Probe를 통해 트래픽을 받을 준비가 되었는지 확인합니다. Readiness Probe가 실패할 경우, 컨테이너는 트래픽을 수신하지 않고 서비스에서 제외될 수 있습니다.

Liveness Probe와 마찬가지로 HTTP 요청, TCP 소켓 연결, 명령어 실행 등의 방법으로 Readiness Probe를 구성할 수 있습니다. 예를 들어, TCP 소켓 연결 방식으로 Readiness Probe를 구성한다면, 컨테이너가 트래픽을 받을 준비가 되면 특정 포트로 연결을 받을 수 있어야 합니다.

Readiness Probe도 Pod의 spec 섹션에 정의되며, initialDelaySeconds, periodSeconds, timeoutSeconds, failureThreshold 등의 옵션을 설정하여 Probe의 동작을 조정할 수 있습니다.

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
    - name: my-container
      image: my-image
      readinessProbe:
        tcpSocket:
          port: 8080
        initialDelaySeconds: 5
        periodSeconds: 10

위의 예시에서는 5초 후부터 컨테이너의 8080 포트로 TCP 소켓 연결을 확인하고, 10초마다 주기적으로 Probe를 수행합니다.

Startup Probe

Startup Probe는 컨테이너가 초기화 및 시작되는 동안 기다리는 프로브입니다. 컨테이너가 시작되면 Startup Probe가 활성화되고, 특정 조건(예: TCP 연결 성공)을 충족할 때까지 기다립니다. Startup Probe가 성공하면 컨테이너의 Liveness Probe와 Readiness Probe가 시작됩니다. Startup Probe는 컨테이너가 시작되는 동안 프로비저닝, 초기화, 데이터베이스 마이그레이션 등과 같은 작업을 수행하는 데 사용됩니다.

Startup Probe도 Pod의 spec 섹션에 정의되며, initialDelaySeconds, periodSeconds, timeoutSeconds, failureThreshold 등의 옵션을 설정하여 Probe의 동작을 조정할 수 있습니다.

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
    - name: my-container
      image: my-image
      startupProbe:
        tcpSocket:
          port: 8080
        failureThreshold: 30
        periodSeconds: 10

위의 예시에서는 8080 포트로 TCP 소켓 연결을 기다리며, 10초마다 주기적으로 Probe를 수행합니다. 만약 30번의 연속 실패가 발생하면 컨테이너의 시작이 실패로 간주됩니다.

0개의 댓글