본문 바로가기
K8S

liveness probe (health check)

by ohrohi 2024. 12. 27.
반응형
  • LivenessProbe를 이용해서 self-healing Pod (kubelet으로 컨테이너 진단하기)
    • Pod가 계속 실행할 수 있음을 보장
    • Pod의 spec에 정의
      • yaml에 livenessProbe를 추가해준다
Pod-definition livenessProbe definition
apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod
spec:
  containers:
  - name: nginx-container
  image: nginx:1.18

apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod
spec:
  containers:
  - name: nginx-container
  image: nginx:1.18

  livenessProbe:
  httpGet:
  path: /
  port: 80
  • name: nginx-container image: nginx:1.18 | apiVersion: v1 kind: Pod metadata: name: nginx-pod spec: containers:
  • name: nginx-container image: nginx:1.18 livenessProbe: httpGet: path: / port: 80 |
  • livenessProbe 매커니즘
    • httpGet probe: 지정한 IP주소, Port, path에 HTTP GET 요청을 보내, 해당 컨테이너가 응답하는지를 확인한다. 반환코드가 200이 아닌 값이 나오면 오류, 컨테이너를 다시 시작한다.
    livenessProbe:
    httpGet:
    path: /
    port: 80

    • tcpSocket probe: 지정된 포트에 TCP연결을 시도. 연결되지 않으면 컨테이너를 다시 시작한다.
    livenessProbe:
    tcpSocket:
    port: 22

    • exec probe: exec 명령을 전달하고 명령의 종료코드가 0이 아니면 컨테이너를 다시 시작한다.
      • 백엔드에 있는 특정 데이터를 가져와서 서비스 하는 방식
      • 데이터가 정상적으로 존재하는지 컨테이너 안에서 지속적으로 체크 (ls, ps .. 등등)
    livenessProbe:
    exec:
    command:
    - ls
    - /data/file
  • (연속 3번 오류발생하면 컨테이너를 kill 후 다시 docker hub (혹은 내부 hub 등)에서 새로운 파드를 받아서 재실행 <restart>)
  • IP address 는 재시작되어도 변경되지 않는다.
  • liveness probe 매개변수
    • periodSeconds: health check 반복 실행 시간 (초)
    • initialDelaySeconds: Pod 실행 후 delay할 시간 (초)
    • timeoutSeconds: health check후 응답을 기다리는 시간 (초)

      Pod-definition livenessProbe definition
      apiVersion: v1
      kind: Pod
      metadata:
        name: nginx-pod
      spec: containers:
        - name: nginx-container
        image: nginx:1.18
      apiVersion: v1
      kind: Pod
      metadata:
        name: nginx-pod
      spec:
        containers:
        - name: nginx-container
        image: nginx:1.18

        livenessProbe:
        httpGet:
        path: /
        port: 80

        initialDelaySeconds: 15
        periodSeconds: 20
        timeoutSeconds: 1
        successThreshold: 1
        failureThreshold: 3

 

 

반응형

'K8S' 카테고리의 다른 글

infra container(pause) 이해하기  (0) 2024.12.27
init container를 적용한 Pod  (0) 2024.12.27
Pod & multi Pod  (1) 2024.12.27
yaml 템플릿 & API  (0) 2024.12.27
Namespace 정리  (0) 2024.12.27