클라우드와 컨테이너의 기초
Kubernetes의 웹 애플리케이션에서, liveness 프로브의 확인 처리 안에서 의존 대상인 데이터베이스에 접속할 수 있는지까지 조사하도록 했다. 이 설정으로 일어날 수 있는 문제로 가장 적절한 것은?
- A데이터베이스가 멈추면 Pod가 데이터베이스가 있는 노드로 자동으로 옮겨져, 그 노드의 다른 애플리케이션의 성능이 떨어진다
- B데이터베이스가 일시적으로 멈춘 것만으로 모든 Pod의 컨테이너가 재시작을 반복하여, 데이터베이스가 돌아와도 회복이 늦어진다
- Cliveness 프로브가 실패해도 Pod가 Service의 분배 대상에서 제외될 뿐이므로, 특별히 문제는 일어나지 않는다
정답과 해설 보기
정답: B. 데이터베이스가 일시적으로 멈춘 것만으로 모든 Pod의 컨테이너가 재시작을 반복하여, 데이터베이스가 돌아와도 회복이 늦어진다
liveness 프로브는 컨테이너 자신이 응답하지 않게 되었을 때(데드락 등) 재시작으로 회복시키기 위한 것입니다. 의존 대상까지 조사하면 데이터베이스가 멈췄을 때 모든 Pod의 liveness 프로브가 실패하여, 재시작해도 고쳐지지 않는데도 컨테이너의 재시작이 반복됩니다. 재시작하는 동안은 요청을 처리할 수 없고, 반복하는 사이에 다음 재시작까지의 대기 시간이 길어지기도 하므로, 데이터베이스가 돌아온 뒤의 회복도 늦어집니다. liveness 프로브에서는 프로세스 자신이 응답할 수 있는지만 조사하고, 의존 대상의 상태는 필요에 따라 readiness 프로브나 애플리케이션의 오류 처리로 다룹니다.