Application 기능으로 k8s 이해 - Probe
Application 기능으로 k8s 이해 - Probe에 대해 학습해 보자! pod안에 probe설정 3가지 : startupProbe/ readinessProbe / livenessProbepod가 만들어 지면 probe 기능 동작startupProbehttpGet: path:"/ready" (공통사항) port: 8080 (공통사항)periodSeconds:10successThreshold: 1failureThreshold: 10 (성공, 실패 수치 )10초에 한 번씩 /ready라는 API를 App에 날린다. 그리고 10번을 실패하기 전에 응답이 있으면 성공!성공 후에 쿠버네티스는 startupProbe기능을 중지 시킨다readinessProbe, livenessProbe 기능 동작 시킨다readinessProbehttpGet: path:"/ready" (공통사항) port: 8080 (공통사항)periodSeconds:10successThreshold: 1failureThreshold: 2 (성공, 실패 수치 )10초에 한 번씩 /ready라는 API를 App에 날린다. App이 살아 있는 동안에는 계속 200 ok결과를 리턴성공 외부 트래픽을 pod가 받을 수 있도록 만들어주면서 서비스 활성화 된다livenessProbehttpGet: path:"/ready" (공통사항) port: 8080 (공통사항)periodSeconds:10successThreshold: 1failureThreshold: 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로 바꿈) & 재기동