클라우드와 컨테이너의 기초

Kubernetes의 웹 애플리케이션에서, liveness 프로브의 확인 처리 안에서 의존 대상인 데이터베이스에 접속할 수 있는지까지 조사하도록 했다. 이 설정으로 일어날 수 있는 문제로 가장 적절한 것은?

  1. A데이터베이스가 멈추면 Pod가 데이터베이스가 있는 노드로 자동으로 옮겨져, 그 노드의 다른 애플리케이션의 성능이 떨어진다
  2. B데이터베이스가 일시적으로 멈춘 것만으로 모든 Pod의 컨테이너가 재시작을 반복하여, 데이터베이스가 돌아와도 회복이 늦어진다
  3. Cliveness 프로브가 실패해도 Pod가 Service의 분배 대상에서 제외될 뿐이므로, 특별히 문제는 일어나지 않는다
정답과 해설 보기

정답: B. 데이터베이스가 일시적으로 멈춘 것만으로 모든 Pod의 컨테이너가 재시작을 반복하여, 데이터베이스가 돌아와도 회복이 늦어진다

liveness 프로브는 컨테이너 자신이 응답하지 않게 되었을 때(데드락 등) 재시작으로 회복시키기 위한 것입니다. 의존 대상까지 조사하면 데이터베이스가 멈췄을 때 모든 Pod의 liveness 프로브가 실패하여, 재시작해도 고쳐지지 않는데도 컨테이너의 재시작이 반복됩니다. 재시작하는 동안은 요청을 처리할 수 없고, 반복하는 사이에 다음 재시작까지의 대기 시간이 길어지기도 하므로, 데이터베이스가 돌아온 뒤의 회복도 늦어집니다. liveness 프로브에서는 프로세스 자신이 응답할 수 있는지만 조사하고, 의존 대상의 상태는 필요에 따라 readiness 프로브나 애플리케이션의 오류 처리로 다룹니다.

이 분야 연습하기 분야로 돌아가기

클라우드와 컨테이너의 기초의 다른 문제

  1. Kubernetes의 HorizontalPodAutoscaler에서 Pod의 CPU 사용률 목표를 70%, Pod 수의 범위를 1~10으로 했다. 현재 5개 Pod의 평균 CPU 사용률이 30%이다. 필요한 Pod의 수를 ⌈현재 수 × 현재 사용률 ÷ 목표 사용률⌉(⌈ ⌉은 올림)로 구할 때, 필요한 Pod의 수로 올바른 것은?
  2. Pod의 컨테이너에 위의 설정을 한 Deployment에서 Pod가 4개 동작하고 있으며, 모든 Pod가 CPU를 400m(0.4코어)씩 사용하고 있다. HorizontalPodAutoscaler의 CPU 사용률 목표를 60%로 하고, 필요한 Pod의 수는 ⌈현재 수 × 현재 사용률 ÷ 목표 사용률⌉로 구한다고 하자. 필요한 Pod의 수로 올바른 것은?
  3. Kubernetes에서 컨테이너에 설정하는 자원의 requests와 limits의 설명으로 올바른 것은?
  4. 할당 가능한 자원이 CPU 4코어, 메모리 8 GiB인 노드가 있다. 각 Pod의 컨테이너에는 requests로 CPU 500m·메모리 1.5 GiB, limits로 CPU 1코어·메모리 2 GiB를 설정했다. 다른 Pod나 시스템 예약은 없다고 하자. 이 노드에 둘 수 있는 Pod의 최대 수로 올바른 것은?
  5. 클라우드의 관리형 데이터베이스 서비스(사업자가 데이터베이스 소프트웨어를 운용하는 서비스)를 사용한다. 공동 책임 모델의 관점에서 일반적으로 이용자의 책임으로 남는 것은?