Print
카테고리: [ Cloud Computing & MSA ]
조회수: 6900

개요

Kubernetes는 기본적으로 프로세스의 정상 상태를 확인하고, Pod의 프로세스가 정상 기동중이지 않으면 Pod를 재시작 한다. 하지만 OOM등의 이슈로 애플리케이션이 응답할 수 없는 상태인 경우, 프로세스는 여전히 떠있어 문제가 발생할 수 있다.

Liveness Probe와 Readiness 프로브를 통해 애플리케이션의 상태를 점검하고 Kubernetes가 조치를 취하도록 설정한다. 


Liveness Probe

주기적으로 수행되며, 애플리케이션의 생존 상태를 점검한다. 

Probe 통과에 실패하는 경우 컨테이너를 재시작한다.

......
livenessProbe:
  exec:
    command:
    - cat
    - /tmp/health
  initialDelaySeconds: 5
  periodSeconds: 5
......
livenessProbe:
  httpGet:
    path: /health
    port: 8080
  initialDelaySeconds: 5
  periodSeconds: 5
......
livenessProbe:
  tcpSocket:
    port:8080
  initialDelaySeconds: 5
  periodSeconds: 5

*initaialDelaySeconds: Probe를 수행하기 전에 대기하는 시간

*periodSeconds: Probe 수행 주기


Readiness Probe

Liveness와 기본적인 사항은 동일하지만, 실패시 컨테이너를 대체하지 않고 기다린다. 

Pod가 처음 기동될 때, 애플리케이션이 정상 실행될 때 까지 대기해야 하는 경우 설정한다. 


확인 가능한 유형

HTTP: 컨테이너의 IP 주소에 GET 요청하여 200~399 사이의 코드를 반환 시 정상 상태로 처리한다. 

TCP: 특정 TCP 소켓에 정상 연결이 되는지 확인한다. 

Exec: 사전 정의한 명령을 실행하여, 정상적으로 커맨드가 종료되었는지 확인한다. 

참고: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/