클라우드와 컨테이너의 기초
readinessProbe:
httpGet:
path: /ready
port: 8080
periodSeconds: 5어떤 웹 애플리케이션은 시작한 뒤 캐시를 읽어 들일 때까지의 약 60초 동안은 요청을 처리할 수 없고, 그동안은 /ready에 503을 반환한다. Pod의 컨테이너에 위의 설정을 추가했을 때의 효과로 올바른 것은?
- A/ready가 실패하는 동안 Pod는 Service의 분배 대상에서 제외되어 요청이 보내지지 않으며, 컨테이너는 재시작되지 않는다
- B/ready가 실패할 때마다 컨테이너가 재시작되므로, 캐시 읽기가 끝나기 전에 재시작이 반복된다
- C/ready가 성공할 때까지 Pod는 어느 노드에도 할당되지 않으며, 컨테이너도 시작되지 않는다
정답과 해설 보기
정답: A. /ready가 실패하는 동안 Pod는 Service의 분배 대상에서 제외되어 요청이 보내지지 않으며, 컨테이너는 재시작되지 않는다
readiness 프로브는 컨테이너가 요청을 받아들일 수 있는 상태인지 조사하고, 실패하는 동안은 그 Pod를 Service의 분배 대상에서 제외합니다. HTTP 프로브에서는 200 이상 400 미만의 응답을 성공으로 간주하므로, 503을 반환하는 동안은 분배되지 않고 준비가 된 뒤에 요청이 도착하게 됩니다. 실패했을 때 컨테이너를 재시작하는 것은 liveness 프로브의 역할이며, 시작에 시간이 걸리는 애플리케이션에 짧은 간격의 liveness 프로브만 설정하면 재시작이 반복될 수 있습니다. Pod를 어느 노드에서 실행할지는 프로브가 아니라 스케줄러가 정합니다.