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

Kubernetes의 Deployment에서 Pod 템플릿의 컨테이너 이미지를 새 버전으로 변경했다. 기본 업데이트 방식(RollingUpdate)에서 일어나는 일로 올바른 것은?

  1. A새 ReplicaSet을 만들어 새 버전의 Pod를 늘리면서 이전 버전의 Pod를 줄인다. 이전 ReplicaSet은 롤백용으로 Pod가 0인 상태로 남는다
  2. B동작 중인 Pod 안의 컨테이너 이미지가 Pod를 다시 만들지 않고 그 자리에서 새 버전으로 교체되므로, Pod의 IP 주소도 이름도 바뀌지 않는다
  3. C이전 버전의 Pod를 모두 동시에 삭제한 다음 새 버전의 Pod를 한꺼번에 만들므로, 업데이트하는 동안 일시적으로 서비스가 멈춘다
정답과 해설 보기

정답: A. 새 ReplicaSet을 만들어 새 버전의 Pod를 늘리면서 이전 버전의 Pod를 줄인다. 이전 ReplicaSet은 롤백용으로 Pod가 0인 상태로 남는다

Deployment는 Pod 템플릿이 바뀌면 새 템플릿의 ReplicaSet을 만들고, 새 Pod가 준비된 것을 확인하면서 이전 ReplicaSet의 Pod를 조금씩 줄입니다. 그래서 업데이트하는 동안에도 일정 수의 Pod가 계속 요청을 처리합니다. 이전 ReplicaSet은 Pod가 0인 상태로 남겨지므로 kubectl rollout undo로 이전 버전으로 되돌릴 수 있습니다. 모든 Pod를 먼저 지운 다음 다시 만드는 방식은 Recreate로, 명시적으로 지정했을 때 사용됩니다.

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

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

  1. replicas: 10인 Deployment에서 롤링 업데이트 설정을 maxSurge: 25%, maxUnavailable: 25%로 했다. 업데이트 도중의 Pod 총수의 상한과 이용 가능한 Pod 수의 하한의 조합으로 올바른 것은?
  2. Kubernetes에서 Pod는 다시 만들어질 때마다 IP 주소가 바뀐다. 다른 애플리케이션이 라벨로 고른 여러 Pod에, 바뀌지 않는 이름과 주소로 접속하여 부하를 분산할 수 있게 하는 리소스는?
  3. Kubernetes 클러스터에서 하나의 호스트 이름으로 도착한 HTTPS 요청 중 경로가 /api로 시작하는 것은 api의 Service로, 그 밖의 것은 web의 Service로 분배하고 싶다. 이 분배 규칙을 정하는 데 적합한 리소스는?
  4. Kubernetes의 Secret에 데이터베이스의 비밀번호를 저장한다. Secret의 설명으로 올바른 것은?
  5. 어떤 웹 애플리케이션은 시작한 뒤 캐시를 읽어 들일 때까지의 약 60초 동안은 요청을 처리할 수 없고, 그동안은 /ready에 503을 반환한다. Pod의 컨테이너에 위의 설정을 추가했을 때의 효과로 올바른 것은?