kubernetes health probe

|

쿠버네티스 health probe

Health probe는 쿠버네티스가 실행중인 어플리케이션이 정상적인 서비스를 제공할 수 있는지의 여부를 확인하는 것이다. 쿠버네티스는 컨테이너 프로세스 상태를 주기적으로 확인하고 문제가 감지되면 컨테이너를 재시작한다. 하지만 컨테이너 프로세스의 확인만으론 어플리케이션이 정상적으로 서비스할 수 있는지 장담할 수 없다.(예를들어 무한 루프에 빠져있거나 데드락에 빠진 상태는 서비스장애를 겪지만 프로세스는 계속 실행중이다) 따라서 쿠버네티스는 health probe 기법중 liveness probe와 readiness probe 이용해 어플리케이션이 서비스 가능한 상태인지 주기적으로 체크하여 어플리케이션의 문제를 자동으로 관리할 수 있다.

Liveness probe

Liveness probe는 어플리케이션의 생존 상태를 점검하는 것이다. 어플리케이션의 상태를 점검하는 방법은 아래와 같다.

  • HTTP probe: HTTP 요청을 통한 응답코드(200 ~ 399)를 확인
  • TCP probe: TCP 소켓 확인
  • Command probe: Exec 컨테이너 커널 네임스페이스에서 작성된 명령을 실행하고 성공적인 종료코드 0을 확인

개발자는 어플리케이션의 특성에 따라 적합한 방법을 선택해야한다. liveness probe는 상태 점검을 통과하지 못하면 컨테이너를 재시작한다. 재시작을해도 특정 상황에서 병목에 빠진다면 근본적인 문제해결이 아니다. 로깅을 이용해 시스템 에러를 로그로 남기고 알림을 트리거하고 분석해야할 것이다.

http liveness probe pod 예제

Readiness probe

점검에 실패하면 컨테이너를 재시작하는 liveness probe와는 다르게 readiness probe는 점검에 실패한 컨테이너에게 트래픽을 차단함으로서 컨테이너에게 과부하 걸린 일을 처리할 시간을 벌어준다. 점검 방법은 liveness probe와 똑같고 주기적으로 수행된다. 하지만 장애 시 컨테이너를 재시작하지 않고 새로운 트래픽을 차단한다는 점이 다르다.

Startup probe

컨테이너 내의 애플리케이션이 정상적으로 시작되었는지 점검한다. 만약 startup probe가 주어진 경우, 성공할 때 까지 다른 나머지 점검은 활성화 되지 않는다. 만약 startup probe가 실패하면, 컨테이너는 삭제되고, 컨테이너는 재시작 정책에 따라 처리된다. 컨테이너에 startup probe가 없는 경우, default 상태는 Success이다.