AWS

[AWS][K8S] Liveness Probe, Readness Probe, Startup Probe

Always-Try 2022. 1. 26. 12:22
https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/
https://medium.com/finda-tech/kubernetes-pod%EC%9D%98-%EC%A7%84%EB%8B%A8%EC%9D%84-%EB%8B%B4%EB%8B%B9%ED%95%98%EB%8A%94-%EC%84%9C%EB%B9%84%EC%8A%A4-probe-7872cec9e568

 

liveness probe, readness probe, Startup Probe 는 모두 쿠버네티스에서 컨테이너의 동작 여부를 확인하기 위한 방안이다. 세 가지가 모두 세부 동작 방식은 비슷한데, 역할 차이가 존재한다. 간단하게 알아보자.

 

 

1. Liveness Probe

kubelet 은 Liveness Probe를 사용하여 컨테이너를 언제 다시 시작할지 판단한다. liveness probe가 없더라도 파드 내 컨테이너가 구동이 실패한다면 재시작이 가능할 것이다. 다만, 컨테이너는 구동하고 있지만 그 안에 돌고 있는 응용 프로그램이 Dead Lock(교착 상태) 등과 같이 실제 동작은 안할 수 있는데, liveness probe는 이를 포착할 수 있으며, 응용 프로그램의 가용성을 높일 수 있다.

 

1) liveness command

컨테이너 내부에 사용자가 지정한 명령을 실행하고 해당 명령의 종료 상태 코드를 확인해서 컨테이너 동작 여부를 확인한다. (0이 아니면 실패)

 

2) liveness HTTP request

사용자가 지정한 IP, Port, Path에 HTTP Get 요청을 하는데, 응답에 대한 에러(2xx, 3xx가 아닌 모든 HTTP 상태 코드) 또는 응답을 하지 않으면 실패로 처리한다.

3) TCP liveness probe

지정된 Port와 Connection 맺기 위한 요청을 하는데, Connection이 Establish가 된다면 살아있고 그렇지 않으면 실패로 처리한다.

2. Readness Probe

컨테이너가 요청을 처리할 준비가 되었는지 여부를 나타낸다. 만약 준비성 프로브(readiness probe)가 실패한다면, 엔드포인트 컨트롤러는 파드에 연관된 모든 서비스들의 엔드포인트에서 파드의 IP 주소를 제거한다. 준비성 프로브의 초기 지연 이전의 기본 상태는 Failure이다. 만약 컨테이너가 준비성 프로브를 지원하지 않는다면, 기본 상태는 Success 이다.

참고) 
https://medium.com/finda-tech/kubernetes-pod%EC%9D%98-%EC%A7%84%EB%8B%A8%EC%9D%84-%EB%8B%B4%EB%8B%B9%ED%95%98%EB%8A%94-%EC%84%9C%EB%B9%84%EC%8A%A4-probe-7872cec9e568

 

세부 동작은 동일

 

3. Startup Probe

컨테이너 내의 애플리케이션이 시작되었는지를 나타낸다. 스타트업 프로브(startup probe)가 주어진 경우, 성공할 때 까지 다른 나머지 프로브는 활성화 되지 않는다. 만약 스타트업 프로브가 실패하면, kubelet이 컨테이너를 죽이고, 컨테이너는 재시작 정책에 따라 처리된다. 컨테이너에 스타트업 프로브가 없는 경우, 기본 상태는 Success 이다.

참고) 
https://medium.com/finda-tech/kubernetes-pod%EC%9D%98-%EC%A7%84%EB%8B%A8%EC%9D%84-%EB%8B%B4%EB%8B%B9%ED%95%98%EB%8A%94-%EC%84%9C%EB%B9%84%EC%8A%A4-probe-7872cec9e568

 

세부 동작은 동일