
Application 기능으로 k8s 이해 - Probe
Application 기능으로 k8s 이해 - Probe에 대해 학습해 보자!
pod안에 probe설정 3가지 : startupProbe/ readinessProbe / livenessProbe
pod가 만들어 지면 probe 기능 동작
startupProbe
httpGet:
path:"/ready" (공통사항)
port: 8080 (공통사항)
periodSeconds:10
successThreshold: 1
failureThreshold: 10 (성공, 실패 수치 )
10초에 한 번씩 /ready라는 API를 App에 날린다. 그리고 10번을 실패하기 전에 응답이 있으면 성공!
성공 후에 쿠버네티스는 startupProbe기능을 중지 시킨다
readinessProbe, livenessProbe 기능 동작 시킨다
readinessProbe
httpGet:
path:"/ready" (공통사항)
port: 8080 (공통사항)
periodSeconds:10
successThreshold: 1
failureThreshold: 2 (성공, 실패 수치 )
10초에 한 번씩 /ready라는 API를 App에 날린다. App이 살아 있는 동안에는 계속 200 ok결과를 리턴
성공 외부 트래픽을 pod가 받을 수 있도록 만들어주면서 서비스 활성화 된다
livenessProbe
httpGet:
path:"/ready" (공통사항)
port: 8080 (공통사항)
periodSeconds:10
successThreshold: 1
failureThreshold: 2 (성공, 실패 수치 )
10초에 한 번씩 /ready라는 API를 App에 날린다. App이 살아 있는 동안에는 계속 200 ok결과를 리턴
readinessProbe, livenessProbe 기능 동작 반복
앱이 살아있는지 계속 확인
만약 2번 실패한다면? 쿠버네티스는 앱을 재기동 시킨다.
(동작 예시)
Application에는 동작이 있다. 그 동작이 자동화 되길 요구 한다.
[초기화 과정-> User 초기화-> 앱 기동]
App 초기화
(API 받을 수 없는 상태): 초기화 끝냈는지에 대한 App 상태 체크, 외부 API 접근 금지
User 초기화
(API 받을 수 있는 상태): App이 살아있는지에 대한 App 상태 체크, 외부 API 접근 금지
App 기동
App이 살아있는지에 대한 App 상태 체크, 외부 API 접근 허용
쿠버네티스 제공 기능
[출처: 인프런 - 쿠버네티스 어나더 클래스 ]
livenessProbe
성공하면 startupProbe 중지 -> livenessProbe, readinessProbe 기능 활성화 -> livenessProbe는 설정된 API 호출-> 만약 (실패)--->장애라고 판단하고 pod 재기
readinessProbe
여전히 Service를 Pod에 연결하고 있지 않음 -> 연결 성공 -> 쿠버네티스가 Service랑 Pod를 연결 -> 트래픽 들어옴 --> 만약 (실패)---->쿠버네티스는 연결 해제 -> 재연
실습
pod를 삭제하고 외부 API 실패
app이 초기화 되고 있는 동안에는 실패한다
내부 API는 성공!
기동 완료 -> 다시 외부 API 날리면 성공!
트래픽 중단 - App 내부 isAppReady를 False로 바꿈
readinessProbe가 3번 실패하면, Service랑 Pod 연결 해제 & 외부 트래픽 받을 수 없음
트래픽 재개 -> App 내부 isAppReady를 True로 바꿈
API - 장애발생 (App 내부 isAppLive를 False로 바꿈) & 재기동
댓글을 작성해보세요.