Kubernetes

Pod Lifecycle(readiness,liveness Probe)

babbeolicoding 2023. 5. 30. 19:50

kubelet이 각 컨테이너의 상태를 특정 조건으로 주기적으로 체크한 뒤
문제가 있는 pod를 자동으로 재시작하거나
문제가 있는 pod를 서비스에서 제외해서 네트워크 유입을 막을 수 있다.
해당 기능을 probe 구성이라고 한다.
probe를 사용하는 방법은 간단하게 2가지가 있다.

 

1. readinessProbe

- 프로브 수행 후 실패하는 경우 pod가 재시작되지 않고 해당 pod를 서비스에서 제외시켜 네트워크 유입을 막는다.

2. livenessProbe

- 프로브 수행 후 실패하는 경우 pod가 재기동된다.

 

Probe를 체크하는 방법

1. HTTP probe
성공: get 요청을 보내서 return이 200~300 사이면 정상
실패: 그 외의 값이 return 되는 경우는 비정상

readinessProbe나 livenessProbe 중 원하는 Probe를 사용하면 된다.

사용방법
  readinessProbe:
      httpGet:
        path: /healthz
        port: 8080
        httpHeaders:
        - name: Custom-Header
          value: Awesome
      initialDelaySeconds: 3
      periodSeconds: 3

2. TCP probe
성공 : tcp 연결이 성공하면 정상
실패 : tcp 연결이 실패하면 비정상

사용방법:
    readinessProbe:
      tcpSocket:
        port: 8080
      initialDelaySeconds: 5
      periodSeconds: 10

3. Command probe
성공 : Command 실행 후 결과값이 0이면 정상
실패 : Command 실행 후 결과값이 0이 아니면 실패

사용방법:
    readinessProbe:
      exec:
        command:
        - cat
        - /tmp/healthy
      initialDelaySeconds: 5
      periodSeconds: 5
  
  
initialDelaySeconds: 컨테이너를 시작한 후 프로브를 예약할 수 있는 시간(초)입니다. 기본값은 0입니다.
periodSeconds: 프로브 수행 사이의 지연 시간(초)입니다. 기본값은 10입니다. 이 값은 timeoutSeconds 보다 커야 합니다.
timeoutSeconds: 프로브가 시간 초과되고 컨테이너가 실패한 것으로 간주되는 비활성 시간(초)입니다. 기본값은 1입니다. 이 값은 periodSeconds 보다 작아야 합니다.
successThreshold: 실패 후 프로브에서 컨테이너 상태를 성공으로 재설정해야 하는 횟수입니다. 활성 상태 프로브는 값이 1이어야 합니다. 기본값은 1입니다.
failureThreshold: 프로브가 실패할 수 있는 횟수입니다. 기본값은 3입니다. 지정된 시도 횟수 후에는 다음이 수행됩니다.

 

Command Probe가 실패할 때 pod describe 상태

 

TCP Probe가 실패할 때 pod describe 상태

 

HTTP Probe가 실패할 때 pod describe 상태