기타/kubernetes

[kubernetes] Probe (Readiness probe, Liveness probe)

닉네임없음ㅎ 2024. 8. 29. 00:15

[kubernetes] Probe (Readiness probe, Liveness probe)

 

쿠버네티스에서 probe는 컨테이너의 상태를 모니터링하기 위해 사용된다. 
애플리케이션이 정상적으로 실행되고 있는지, 준비가 되었는지, 그리고 계속해서 정상적인 상태를 유지하고 있는지를 
확인하는데 사용됨. 

 


 

 

 





세가지 유형의 probe가 있음 (Readiness Probe, Liveness Probe, Startup Probe)

 


1. Readiness Probe
컨테이너가 트래픽을 처리할 준비가 되었는지 확인하는데 사용됨.
이 프로브는 애플리케이션이 완전히 구동되기 전까지는 트래픽을 받지 않게 해준다. 

앱이 아직구동되지 않은순간 트래픽을 보내게 되면 사용자는 에러를 볼수있다.
그래서 앱이 아직 준비중일때는 Readiness Probe가 실패하여 해당 파드로 트래픽을 보내지 않고,
앱이 완전 준비된것이 확인되면 서비스가 연결되어 트래픽 전송됨. 

사용 예 ) 애플리케이션 초기화 과정에서 필요한 작업 (예: 데이터베이스 연결 등)을 마친 후에만 
외부 요청을 처리하도록 함. 

2. Liveness Probe
컨테이너가 지속적으로 살아있는지 확인하는데 사용된다.

이 프로브는 컨테이너가 실행 중이지만 애플리케이션이 다운된 경우를 감지하고, 
이러한 경우 Liveness Probe가 실패하게 되어, 쿠버네티스가 컨테이너를 재시작함.

사용 예 ) 애플리케이션이 더이상 응답하지 않는 경우,, 

3. Startup Probe
컨테이너가 완전히 시작되었는지 확인함. 
Startup probe는 Liveness probe와 유사하지만, 주로 애플리케이션의 시작이 느린 경우 사용함. 

liveness와 readiness는 일정시간 내에 응답이 없을 경우 파드를 실패로 간주하여 계속하여 재시작을 할 수 있는데, 
만약 앱 초기화가 아주 오래 걸리는 경우 불필요한 재시작을 유발할 수 있음.. 
startupProbe를 적용하면 이 기간 동안에 다른 프로브들이 비활성화 되기 때문에 
startupProbe가 성공하면 앱이 정상적으로 시작되었다 간주하고 이후 liveness, readiness 프로브를 사용하여 상태를 모니터링 할 수 있음. 


앱의 상태를 확인할 수 있는 방법으로는
httpGet, exec명령, tcpSocket을 사용할 수 있음. 


그리고 옵션값으로 
initialDelaySeconds - 최초 프로브를 실행하기 전 지연시간 (기본 : 0초) 
periodSeconds - 프로브 간격 (기본 10초)
timeoutSeconds - 응답대기시간 (기본 1초)
successThreshold - 성공으로 간주할 횟수 (기본 1회)
failureThreshold - 실패로 간주할 횟수 (기본 3회)
이렇게 지정할 수 있다. 


프로브를 통과하고나면 
ContainerReady 는 true가 되고  ready 상태도 true가 되면서 service의 엔드포인트에 주소가 등록되어 트래픽을 받을 수 있음.