CKAD — 쿠버네티스 애플리케이션 개발자 · 애플리케이션 설계와 빌드 · 퀴즈
퀴즈: 애플리케이션 설계와 빌드
문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.
init 컨테이너를 세 개 나열했는데 두 번째가 계속 실패한다. 파드는 어떤 상태인가?
- 세 번째 init 컨테이너가 건너뛰어지고 메인 컨테이너가 시작된다
- 파드가 즉시 Failed 로 바뀌고 재시도하지 않는다
- `Init:1/3` 상태에 머물고 메인 컨테이너는 시작되지 않는다
- 메인 컨테이너는 시작되지만 Ready 가 되지 않는다
`initContainers` 안의 컨테이너에 `restartPolicy: Always` 를 주면 무엇이 달라지는가?
- 메인 컨테이너와 동시에 시작하도록 순서 보장이 해제된다
- 네이티브 사이드카가 되어 메인보다 먼저 시작해 계속 살아 있고, Job 에서는 메인 종료 시 함께 종료된다
- 그 init 컨테이너만 파드 수준 restartPolicy 를 무시하고 절대 재시작하지 않는다
- init 컨테이너가 실패해도 파드가 계속 진행된다
Job 에 `completions: 6`, `parallelism: 2`, `backoffLimit: 3` 을 주었다. 이 설정의 의미로 옳은 것은?
- 6분 동안 2개씩 실행하고 3번 재시도한다
- 파드 2개를 6번씩 재사용하며 실패 시 3초 뒤 재시도한다
- 파드 6개를 한 번에 띄우고 그중 2개만 성공하면 완료된다
- 성공한 파드가 6개가 될 때까지 동시에 최대 2개씩 실행하며, 실패가 누적 3회를 넘으면 Job 이 실패로 확정된다
CronJob 에 `concurrencyPolicy: Replace` 와 `startingDeadlineSeconds: 120` 을 주었다. 옳은 설명은?
- 이전 실행이 아직 돌고 있으면 그것을 종료하고 새 Job 을 시작하며, 예정 시각을 120초 넘게 놓치면 그 회차는 건너뛴다
- 실행을 120초 동안만 허용하고 넘으면 종료한다
- 이전 실행이 돌고 있으면 새 실행을 큐에 넣고 120초 뒤 시작한다
- 이전 실행이 돌고 있으면 새 실행을 건너뛰고, 120초마다 재시도한다
파드 스펙의 `command` 와 `args` 는 컨테이너 이미지의 무엇을 각각 덮어쓰는가?
- `command` 는 CMD 를, `args` 는 ENTRYPOINT 를 덮어쓴다
- 둘 다 CMD 를 덮어쓰며 순서대로 이어 붙는다
- `command` 는 셸에서 실행되고 `args` 는 exec 로 실행된다
- `command` 는 ENTRYPOINT 를, `args` 는 CMD 를 덮어쓴다
Job 이 만드는 파드에 `restartPolicy: Always` 를 쓸 수 없는 이유는?
- Always 는 parallelism 이 1일 때만 허용되기 때문이다
- Always 를 쓰면 backoffLimit 이 무시되어 무한 재시도가 되기 때문이다
- 파드가 종료 상태로 가지 않고 계속 재시작되므로 Job 이 성공 횟수를 셀 수 없다
- Always 는 Deployment 전용 값이라 API 검증에서 막히지만 Job 에서도 동작은 한다