작성
·
53
1
안녕하세요, 강의 내용과는 큰 관련 없는 질문이지만 지식 공유자님의 경험이 듣고 싶어서 질문 드립니다.
저희 회사에는 EKS가 구축되어 있고, 기존에 사용하던 템플릿이 있어서 확인해 보았는데,
startupProbe 없이 livenessProbe, readinessProbe만 최초 5초 정도 지난 후 동작하도록 세팅이 되어 있더라구요.
저는 JVM 개발자이지만, 아직까지 다른 올라가있는 모든 App들이 파이썬 기반이라서 가능한 것으로 추측이 되었습니다.
따라서 파이썬 기반이어서 최초 기동 시간이 필요가 없는 경우 등등 실제로 이런 식으로 startupProbe 없이 사용해도 무방한지가 궁금했고, 사용하는 경우가 자주 있다면 어떤 경우에 주로 사용되는지도 궁금합니다.
감사합니다.
답변 2
0
앱이 컨테이너 시작 후 1~2초 안에 바로 포트 바인딩하고 응답 가능한 상태가 된다면, 바로 LivenessProbe가 호출되도 정상 응답을 할거고, 그럼 StartupProbe가 없어도 문제가 없습니다.
하지만 이 경우에도 확인해 볼 사항은 "정말 서비스가 온전한 상태 인가?" 입니다. 기동이 된 후에 트래픽이 쏟아져 들어온다 했을 때 문제가 없다는 것 까지 확인 되면 StartupProbe를 쓸 필요는 없죠.
StartupProbe가 이걸 위한 목적이고, 그렇기 때문에 이런 사항을 넘어서 StartupProbe를 써야되는 경우는 없습니다.
0
안녕하세요, 인프런 AI 인턴입니다. 호준님.
startupProbe, livenessProbe, readinessProbe는 Kubernetes에서 애플리케이션의 상태를 체크하기 위한 중요한 메커니즘입니다. 각 프로브의 사용은 애플리케이션과 시스템의 요구에 따라 달라질 수 있습니다.
LivenessProbe는 컨테이너가 정상적으로 작동 중인지 확인하여, 문제가 발생했을 때 자동으로 재시작하게 합니다. 이는 애플리케이션에 의해 발생될 수 있는 비정상 상태를 피하는 데 유용합니다.
ReadinessProbe는 애플리케이션이 트래픽을 받을 준비가 되었는지를 체크합니다. 준비가 되지 않았다면 Kubernetes는 이를 서비스에서 제외하여 외부에서 접근할 수 없게 합니다. 이는 클라이언트의 요청을 정상적으로 처리할 수 있을 때까지만 요청이 전달되도록 합니다.
StartupProbe는 애플리케이션이 시작되는 데 시간이 오래 걸릴 경우, 초기 기동 상태에서 발생할 수 있는 불필요한 liveness 및 readiness 프로브 실패를 방지합니다. 이는 특히 애플리케이션 시작 시간이 긴 Java 기반 애플리케이션에서 매우 유용할 수 있습니다.
Python 기반 애플리케이션은 상대적으로 빠르게 시작될 수 있으므로 startupProbe가 반드시 필요하지 않을 수 있습니다. 그러나 Java 기반 애플리케이션이나 기동 시 복잡한 초기 설정이 필요한 경우에는 startupProbe를 설정하는 것이 바람직합니다.
결국, 각 프로브의 설정은 애플리케이션 환경에 따라 다르다는 점을 기억하세요. 환경이 변경되거나 애플리케이션의 복잡성이 증가함에 따라 프로브 구성도 조정될 수 있습니다.
관련된 유사한 질문을 다룬 게시물을 소개합니다:
- readinessProbe와 startupProbe의 차이점
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.