작성
·
128
0
[질문 하기]
강의를 보다 livenessProbe가 killing하고 restart하는 기준이 이해가 안가서 질문 게시판을 봤는데, 저와 비슷한 의문을 가지신 분이 계신 것 같아서 질문드립니다.
일단 periodSeconds가 10초, 30초 모두 livenessProbe에서 실패를 하는데, 10초 설정은 killing을 하고 30초는 killing을 안 하길래 찾아보니 failureThreshold라는 값이 또 있더라고요. 이 필드는 몇 번의 실패를 수신해야 실패로 간주하는지 설정하는 옵션입니다 (기본값: 3). 이걸 보니 10초와 30초 옵션의 차이를 이해하게 되었습니다.
10초는 빠른 시간 내에 반복 체크해서 3번 실패하여 바로 실패로 간주하고 재시작하였고, 30초 옵션은 반복 2회차 이후에 pod가 정상적으로 떠서 3회차에 성공하여 pod를 재시작하지 않은 것 같습니다.
이외에도 다른 여러 옵션이 있지만 모든 옵션을 다루기에는 시간상 어려울 거라는 점은 이해합니다. 다만, 실습 환경에서 단순히 시간 차이로 테스트하는데 이러한 부분이 언급되지 않으면 이해하기 어려울 것 같습니다. 위 내용을 언급하지 않으신 특별한 이유가 있으신가요? 없다면 보충해주시는 게 좋지 않을까 조심스럽게 의견 드립니다.
답변 3
1
이와 관련하여 다른 부분은 기본 값이 꽤 괜찮긴 하나...
Startup의 경우 failurethreshold
를 조정하는 것도 괜찮을 수 있겠다는 생각이 들긴 합니다. (잘 모르는 경우, 급한 경우) 다만...최적화의 입장에서는 그냥 looping의 느낌으로 failurethreshold
를 하는게 아니라 검증하고 테스트해서 기다리는 시간에 대해서 hooking을 덜하도록 설계하는게 더 낫겠다고 생각합니다.
함께 참고를 부탁드립니다.
1
안녕하세요
좋은 질문 및 의견에 우선 감사드립니다.
우선 기본값(default)에 관해서 꼭 알아야 하는 것이 아니면 가능한 설명하지 않은 것이 맞습니다.
위에 기입해 주신 것처럼 모든 옵션을 다루기에는 시간 상 어렵다는 부분 외(1)에
이외에도 다른 여러 옵션이 있지만 모든 옵션을 다루기에는 시간상 어려울 거라는 점은 이해합니다. 다만, 실습 환경에서 단순히 시간 차이로 테스트하는데 이러한 부분이 언급되지 않으면 이해하기 어려울 것 같습니다.
오히려 많은 정보(2)가 주입되면 처음 배우는 입장에서 더 혼란스러울 수 있다고 생각합니다.
이건 개개인의 차이가 있어서 정확하게 현재 완전히 개인화된 강의가 아니기 때문에 더욱 설명하기 어려운 부분이 있습니다.
또한 기본 값(default / 자동 생성되는 부분)에 관련해서는 위의 말씀드린 것처럼 가급적 설명하지 않았는데... 그 이유는 이미 쿠버네티스에서 베스트 프렉티스 성격으로 지정해 놓은 값(3)이기 때문입니다.
(사실 보통 hello packet도 3번하는게 관례적이긴 합니다.)
이와 관련하여 관심이 있으시다면 보강인 "B.008.기본(default) 설정의 중요성" 을 보시는 것도 좋으실 것 같습니다.
https://www.inflearn.com/courses/lecture?courseId=327444&unitId=248095&subtitleLanguage=ko
마지막으로 이건 교수법에 종류이긴 하지만
이건 왜 이러지 왜 이렇게 동작하지 의문(4)을 가지고 찾고 이해하시면 아마 금방 안 잊어버리실 겁니다.
모든 옵션과 모든 내용을 다 설명하는 것도 좋지만 의문을 가지고 찾아보는게 사실 가장 효과적으로 (그래서 실습을 항상 넣습니다. / 테스트 해봐야 되니까요 / 검증하는 것도 좋아하고요) 배울 수 있는 방법입니다.
다소 구태의연하고 오히려 일부 반감을 가져올 수 있는 부분인 것을 알고 있긴 하지만....
저는 개인적으로 분명히 많은 것을 느끼고 많은 것을 배우시면 좋겠다는 개인적인 생각을 가지고 있습니다.
이에 설명이 부족하다고 느끼시는 부분은 죄송하게 생각하며,
노트에 해당 내용을 오해하지 않을 수 있는 수준으로 적어두도록 하겠습니다.
특별한 이유와 관련하여 (1)~(4)개의 부분을 기반으로 설명하지 않았다고 보시면 될 것 같습니다.
+로 아마 어휘의 차이 같긴 한데..."몇 번의 실패를 수신해야 실패로 간주하는지 설정하는 옵션입니다 (기본값: 3)" 라기 보다.. 계속 단순히 시도하게 되면 해결되지 않고 오히려 사이드이펙트가 날 수 있으니 그에 맞는 조치를 하기 위해 존재하는 옵션입니다.
이미 영상에서도 설명하긴 했지만...각 Probe에 따라 Threshold 값을 넘어서면 다르게 동작합니다.
failureThreshold
: The number of times that the probe is allowed to fail. The default is 3. After the specified attempts:
for a liveness probe, the container is restarted
for a readiness probe, the pod is marked Unready
for a startup probe, the container is killed and is subject to the pod’s restartPolicy
아 저야말로 생각지도 못했던 부분을 정권호님이 말씀해 주셔서
큰 도움이 된거 같습니다. 🙂 이런 저런 경험들을 녹여서 더 좋은 내용들이 배포될 수 있도록 하겠습니다! (우선 올해는 진짜 정말 CI/CD 강의를 릴리즈하려고요 ㅠ ㅠ )
감사합니다!!!
0
안녕하세요, 인프런 AI 인턴입니다. 정권호님께서 livenessProbe 관련하여 좋은 질문 주셨네요. Kubernetes의 livenessProbe는 컨테이너가 정상적으로 동작하는지 체크하고, 실패 시에 컨테이너를 어떻게 조치할지를 결정하는 중요한 메커니즘입니다.
livenessProbe의 구성 요소:
1. initialDelaySeconds: Liveness Probe가 시작하기 전에 대기하는 시간입니다.
2. periodSeconds: 프로브를 수행하는 간격 시간입니다.
3. timeoutSeconds: 프로브가 타임아웃되기까지 기다리는 시간입니다.
4. failureThreshold: 프로브가 실패로 간주되기 전까지 연속적인 실패 횟수입니다.
5. successThreshold: 프로브가 성공으로 간주되기 위한 연속적인 성공 횟수입니다.
당신이 언급한 failureThreshold는 기본값이 3이며, 이는 컨테이너가 종료되어 재시작되기 전까지 프로브가 3번 실패해야 한다는 뜻입니다. 따라서 periodSeconds가 10초일 경우에는 빠르게 반복 체크하여 실패를 감지하고, 30초일 경우 그 사이에 컨테이너가 회복될 기회를 주는 것으로 볼 수 있습니다.
이 내용은 이해하기 어려울 수 있지만, 이러한 파라미터들이 서로 어떻게 작동하는지를 이해하면 실용적인 쿠버네티스 운영에 큰 도움이 됩니다. 실습 시에 이런 부분들이 명확히 설명되지 않은 것은 아마도 강의 시간이 제한적이어서 모든 세부 사항을 다루지 못한 것일 수 있습니다. 하지만, 강사님께서도 강조해야 할 중요한 포인트로 추가적인 설명을 통해 개선될 가능성이 있겠습니다.
유사한 질문에 대한 기존 강사님의 답변을 참고하시려면 initialDelaySeconds와 periodSeconds 설정에 대해를 확인하실 수 있습니다. 이 링크가 설명을 이해하는 데 도움이 될 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
말씀 주신 것처럼 확실히 이 내용에 관해서는 확실히 기억에 남을 거 같고 저도 개인적으로 이런 학습 방법을 선호하는 편입니다!
친절한 답변 감사드리며 좋은 퀄리티의 강의 잘 듣고 있습니다. 앞으로도 좋은 강의 많이 부탁드립니다 :)