쿠버네티스에 설정한 probe가 어떻게 실행되는지 알아야하는 이유
쿠버네티스 pod가 정상적으로 동작하는 지 확인하기 위해 probe 설정을 합니다. probe는 설정된 값으로 pod를 주기적으로 헬스체크합니다.
readinessProbe:
httpGet:
path: /actuator/health/readiness
port: 8080
initialDelaySeconds: 15
periodSeconds: 3
timeoutSeconds: 1
failureThreshold: 1
livenessProbe:
httpGet:
path: /actuator/health/liveness
port: 8080
initialDelaySeconds: 15
periodSeconds: 5
timeoutSeconds: 3
failureThreshold: 1
그런데, 헬스체크가 실패한다면 pod에 문제 있어서 실패한걸까요? pod는 정상이지만 헬스체크가 실패하는 경우가 자주 있습니다. 이런 상황에 마주칠때 pod에 설정된 헬스체크 원리를 모른다면 원인을 파악하는데 많은 시간이 걸립니다.
최근에 제가 겪었던 pod probe검사 실패는 쿠버네티스가 아닌 전부 애플리케이션 레이어에서 발생했습니다. 그리고 애플리케이션 헬스체크 오류 원인은 데이터베이스 부하에 있었습니다. 즉, 쿠버네티스 외부 시스템(데이터베이스)의 영향으로 pod probe검사가 실패했었습니다.
당시 probe에 설정된 헬스체크 원리를 모르고 쿠버네티스 설정을 수정하는 방향으로 장애 조치를 했더라면, 장애해소가 늦게 됬을거라고 생각합니다.
관련된 내용은 저의 블로그와 유투브에서 만나볼 수 있습니다.