개요
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: 사전 정의한 명령을 실행하여, 정상적으로 커맨드가 종료되었는지 확인한다.