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

readinessProbe:
  httpGet:
    path: /ready
    port: 8080
  periodSeconds: 5

어떤 웹 애플리케이션은 시작한 뒤 캐시를 읽어 들일 때까지의 약 60초 동안은 요청을 처리할 수 없고, 그동안은 /ready에 503을 반환한다. Pod의 컨테이너에 위의 설정을 추가했을 때의 효과로 올바른 것은?

  1. A/ready가 실패하는 동안 Pod는 Service의 분배 대상에서 제외되어 요청이 보내지지 않으며, 컨테이너는 재시작되지 않는다
  2. B/ready가 실패할 때마다 컨테이너가 재시작되므로, 캐시 읽기가 끝나기 전에 재시작이 반복된다
  3. C/ready가 성공할 때까지 Pod는 어느 노드에도 할당되지 않으며, 컨테이너도 시작되지 않는다
정답과 해설 보기

정답: A. /ready가 실패하는 동안 Pod는 Service의 분배 대상에서 제외되어 요청이 보내지지 않으며, 컨테이너는 재시작되지 않는다

readiness 프로브는 컨테이너가 요청을 받아들일 수 있는 상태인지 조사하고, 실패하는 동안은 그 Pod를 Service의 분배 대상에서 제외합니다. HTTP 프로브에서는 200 이상 400 미만의 응답을 성공으로 간주하므로, 503을 반환하는 동안은 분배되지 않고 준비가 된 뒤에 요청이 도착하게 됩니다. 실패했을 때 컨테이너를 재시작하는 것은 liveness 프로브의 역할이며, 시작에 시간이 걸리는 애플리케이션에 짧은 간격의 liveness 프로브만 설정하면 재시작이 반복될 수 있습니다. Pod를 어느 노드에서 실행할지는 프로브가 아니라 스케줄러가 정합니다.

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

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

  1. Kubernetes의 웹 애플리케이션에서, liveness 프로브의 확인 처리 안에서 의존 대상인 데이터베이스에 접속할 수 있는지까지 조사하도록 했다. 이 설정으로 일어날 수 있는 문제로 가장 적절한 것은?
  2. Kubernetes의 HorizontalPodAutoscaler에서 Pod의 CPU 사용률 목표를 70%, Pod 수의 범위를 1~10으로 했다. 현재 5개 Pod의 평균 CPU 사용률이 30%이다. 필요한 Pod의 수를 ⌈현재 수 × 현재 사용률 ÷ 목표 사용률⌉(⌈ ⌉은 올림)로 구할 때, 필요한 Pod의 수로 올바른 것은?
  3. Pod의 컨테이너에 위의 설정을 한 Deployment에서 Pod가 4개 동작하고 있으며, 모든 Pod가 CPU를 400m(0.4코어)씩 사용하고 있다. HorizontalPodAutoscaler의 CPU 사용률 목표를 60%로 하고, 필요한 Pod의 수는 ⌈현재 수 × 현재 사용률 ÷ 목표 사용률⌉로 구한다고 하자. 필요한 Pod의 수로 올바른 것은?
  4. Kubernetes에서 컨테이너에 설정하는 자원의 requests와 limits의 설명으로 올바른 것은?
  5. 할당 가능한 자원이 CPU 4코어, 메모리 8 GiB인 노드가 있다. 각 Pod의 컨테이너에는 requests로 CPU 500m·메모리 1.5 GiB, limits로 CPU 1코어·메모리 2 GiB를 설정했다. 다른 Pod나 시스템 예약은 없다고 하자. 이 노드에 둘 수 있는 Pod의 최대 수로 올바른 것은?