• 카테고리

    질문 & 답변
  • 세부 분야

    데브옵스 · 인프라

  • 해결 여부

    미해결

liveness probe 실습 로그 문의

24.04.07 01:23 작성 24.04.07 02:13 수정 조회수 67

1

안녕하세요. 수업이 쿠버네티스 개념을 잡는데 큰 도움이 되고 있습니다. 가르침 감사드립니다.

 

<Pod - ReadinessProbe, LivenessProbe 실습> 영상 내용 중에 궁금한 점이 있어 문의드립니다. 영상 후반 부에 LivenessProbe 의 동작 확인을 위해서 /health 에 대한 응답을 500 으로 변경하는 부분인데요.

로그와 events 의 내용들을 보면

  1. /health 가 Internal Server Error 를 반환

  2. LivenessProbe 가 3회 실패

  3. kubelet 이 pod 를 죽이고 새로 실행

  4. Failed connect to 10.98.134.186:8080; 연결이 거부됨

  5. pod 가 restart 되면서 정상적으로 응답을 반환

순으로 동작을 하네요.

 

이 과정에서 4번째에 있는 연결이 거부됨 로그의 경우, kubelet 에 의해서 pod 가 restart 가 되면서 외부 요청을 처리할 수 있는 Pod 가 없기 때문에 발생하는 걸로 이해를 했는데요.

이 샘플은 livenessProbe 의 동작을 확인 하기 위한 샘플로써, readinessProbe 에 대한 설정이 없기 때문에 pod 이 restart 되는 동안에 service 에서 pod 의 연결을 해제하지 않고 일부러 외부 요청을 받는 상황을 가정하고 있는 건가요 ??

 

본문 작성 후 추가)

만약 컨테이너가 준비성 프로브를 지원하지 않는다면, 기본 상태는 Success 이다.

출처: 쿠버네티스 공식 문서 - 프로브 종류

에 보니까, 따로 컨테이너에 설정하지 않는 경우에는 prode 의 상태가 success 라고 하는데. 이것 때문에 일까요?

샘플 예제에서는 livenessProbe 만 설정해두었고 .. readinessProbe 에 대한 설정은 없었기 때문에 readinessProbe 가 success 상태로 남아 있고 때문에 pod 가 service 와의 연결을 해제하지 않고 계속 붙어있는 상태 였기 때문에 Failed connect to 10.98.134.186:8080; 연결이 거부됨 을 로그에서 확인했다고 보면 맞을까요..? 아니면 단순하게 readinessProbe 가 없기 때문에 상태를 알 수 없어서 서비스와 파드의 연결을 해제하지 않고 유지했다고 봐야 할까요 ??

답변 2

·

답변을 작성해보세요.

0

재미있는 테스트 였네요.

일단 컨테이너 Restart시 자동으로 Endpoint의 IP는 사라지지 않습니다. 꼭 readiness가 실패 되어야 Endpoint에 IP가 삭제되어, 트래픽을 보내주지 않게 되요.

하지만 readiness를 설정하지 않았으니, App이 기동되는 동안은 계속 연결이 거부가 된 겁니다.

그렇기 때문에 꼭 Readiness가 있어야 되고요.

Liveness 실패와 동시에 Readiness도 같이 3번 실패 되기 때문에 컨테이너가 재시작 되는 시점에 IP를 제거해줘서 트리픽 로스가 안 생기게 되요.

해당 실습은 Liveness를 테스트하기 위한 용도이기 때문에 readiness를 쓰지 않은 거지, 항상 readiness는 써야 합니다.

0

안녕하세요. 저도 오래전에 만든 강의고, 질문의 내용이 너무 디테일해서 강의를 다시 확인해봤네요.

일단 하나의 현상을 보고 이렇게 깊이있는 질문에 놀랐고요. readiness가 없기 때문에 바로 success가 되서 endpoint가 service에 연결 됬기 때문에 app이 아직 기동전이라면 트래픽이 실패되요.

근데 이건 최초 기동중인 상태일때 동작이고 재시작 중인 상태에서 pod가 아닌 컨테이너가 restart 되면서 eendpoint가 재연결이 되는지는 저도 실습을 다시 해보면서 확인을 해봐야겠네요. (좋은 질문입니다)

현재 외부에 있어서 내일 확인해보고 다시 답변 드릴께요