[kubernetes] probe 개념

Mr.Song·2022년 6월 10일
0

Docker / Kubernetes

목록 보기
3/13

kubelet

kubelet은 컨테이너를 주기적으로 진단한다. 이 때 필요한 프로브(probe)에는 3가지가 있다.

1. livenessProbe

컨테이너가 실행 됐는지 확인한다. 이 진단이 실패하면 kubelet은 컨테이너를 종료시키고 재시작 정책에 따라 컨테이너를 재시작한다. 기본 상태값은 success이다

2. readnessProbe

컨테이너가 실행 된 후 실제 서비스 요청에 응답할 수 있는지 진단한다. 이 진단이 실패하면 엔드포인트 컨트롤러는 해당 파드에 연결 된 서비스를 대상으로 엔드포인트 정보를 제거한다. 첫 번째 livenessProbe를 진단하기 전까지는 Failure 상태이며, readnessProbe를 지원하지 않는 컨테이너라면 기본 상태는 success이다.

3. startupProbe

컨테이너 안 애플리케이션이 시작되었는지 진단한다. startupProbe는 진단이 성공할 때 까지 나머지 프로브는 활성화 되지않으며, 진단이 실패할 경우 kubelet이 컨테이너를 종료시키고 재시작정책에 따라 처리한다. startupProbe가 없으면 기본 상태 값은 successs이다

readnessProbe를 지원하는 컨테이너가 컨테이너가 실행 된 다음 바로 서비스에 투입되어서 트래픽을 받지 않는다. 실제로 트래픽을 받을 준비가 되었는지 확인한 후 트래픽을 받는다. 자바 애플리케이션처럼 프로세스가 시작한 후 초기화 될 때까지시간이 걸리는 상황이거나, 앱을 실행 할 때 대용량 데이터를 불러오거나 앱 환경설정 미스로 앱이 실행되지 않은 경우에도 대비할 수있다.

컨테이너 진단

진단은 kubelet이 컨테이너 핸들러를 호출하여 진단한다

  • ExecAction : 컨테이너 안에 지정 된 명령을 실행하고 종료 코드가 0일 때 Success로 진단한다.
  • TCPSocketAction : 컨테이너 안에 지정 된 IP와 포트로 TCP 상태를 확인하고 포트가 열려있으면 Success로 진단한다.
  • HTTPGetAction : 컨테이너 안에 지정 된 IP, Port, 경로로 HTTP GET 요청을 보내, 응답 상태 코드가 200에서 400사이면 Success라고 진단하다.

진단 결과는 아래 3가지로 나뉜다.

  • Success : 컨테이너가 진단에 성공
  • Failure : 컨테이너가 진단에 실패
  • Unknown : 진단 자체가 실패해서 컨테이너 상태를 알 수 없음
profile
정리를 못하면 기록이라도 하자!!

0개의 댓글