Application 기능으로 k8s 이해 - Probe

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번 실패한다면? 쿠버네티스는 앱을 재기동 시킨다.

 

(동작 예시)

image


Application에는 동작이 있다. 그 동작이 자동화 되길 요구 한다.

[초기화 과정-> User 초기화-> 앱 기동]

App 초기화

  • (API 받을 수 없는 상태): 초기화 끝냈는지에 대한 App 상태 체크, 외부 API 접근 금지

User 초기화

  • (API 받을 수 있는 상태): App이 살아있는지에 대한 App 상태 체크, 외부 API 접근 금지

App 기동

  • App이 살아있는지에 대한 App 상태 체크, 외부 API 접근 허용

 

쿠버네티스 제공 기능

image [출처: 인프런 - 쿠버네티스 어나더 클래스 ]

livenessProbe

성공하면 startupProbe 중지 -> livenessProbe, readinessProbe 기능 활성화 -> livenessProbe는 설정된 API 호출-> 만약 (실패)--->장애라고 판단하고 pod 재기

 

readinessProbe

여전히 Service를 Pod에 연결하고 있지 않음 -> 연결 성공 -> 쿠버네티스가 Service랑 Pod를 연결 -> 트래픽 들어옴 --> 만약 (실패)---->쿠버네티스는 연결 해제 -> 재연


 

실습

pod를 삭제하고 외부 API 실패

app이 초기화 되고 있는 동안에는 실패한다

image

내부 API는 성공!

image

기동 완료 -> 다시 외부 API 날리면 성공!

image

트래픽 중단 - App 내부 isAppReady를 False로 바꿈

image

readinessProbe가 3번 실패하면, Service랑 Pod 연결 해제 & 외부 트래픽 받을 수 없음

image

트래픽 재개 -> App 내부 isAppReady를 True로 바꿈

imageimage

API - 장애발생 (App 내부 isAppLive를 False로 바꿈) & 재기동

image

댓글을 작성해보세요.

채널톡 아이콘