CKA — 쿠버네티스 관리자 · 워크로드와 스케줄링 · 퀴즈
퀴즈: 워크로드와 스케줄링
문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.
replicas 가 4이고 maxSurge 2, maxUnavailable 0 인 Deployment 를 롤링 업데이트할 때 파드 수의 범위는?
- 최대 6개, 최소 4개
- 최대 4개, 최소 2개
- 최대 6개, 최소 2개
- 최대 4개, 최소 4개 (파드 수가 전혀 변하지 않는다)
단일 노드 클러스터에서 CoreDNS 는 정상인데 새로 설치한 Deployment 만 Pending 이고 'untolerated taint' 메시지가 보인다. 원인은?
- Deployment 는 DaemonSet 과 달리 노드를 고를 수 없기 때문
- 그 Deployment 의 이미지를 받지 못했기 때문
- CNI 가 아직 준비되지 않아 파드 네트워크를 배정할 수 없기 때문
- 컨트롤 플레인 노드의 NoSchedule 테인트를 CoreDNS 는 기본 톨러레이션으로 견디지만 그 Deployment 는 견디지 못하기 때문
rollout undo 로 이전 버전으로 돌아갈 수 있는 진짜 이유는?
- Deployment 오브젝트 안에 이전 파드 스펙이 통째로 보관되기 때문
- revisionHistoryLimit 개수만큼 이전 ReplicaSet 이 레플리카 0 으로 남아 있고, undo 는 그것을 다시 키우기 때문
- etcd 가 모든 리비전을 영구히 보관하기 때문
- kubectl 이 로컬 캐시에 이전 매니페스트를 저장하기 때문
StatefulSet 이 Deployment 와 근본적으로 다른 점을 가장 정확히 말한 것은?
- 파드가 언제나 처음 떴던 같은 노드에 다시 뜬다
- 롤링 업데이트를 지원하지 않는다
- 파드 이름이 서수로 고정되고 생성·삭제 순서가 보장되며 파드마다 자기 PVC 를 갖는다
- 레플리카를 0 으로 줄일 수 없다
32GB VRAM 이 필요한 학습 파드가 8GB GPU 노드에 배치되는 사고를 막는 가장 적절한 방법은?
- 확장 자원은 개수만 표현하므로, 체급을 나타내는 노드 라벨을 붙이고 nodeSelector 나 노드 어피니티로 고르게 한다
- device plugin 을 재시작해 GPU 메모리를 다시 인식시킨다
- resources.limits 대신 requests 에 nvidia.com/gpu 를 적는다
- GPU Operator 를 최신 버전으로 올린다
topologySpreadConstraints 의 whenUnsatisfiable 두 값의 차이는?
- DoNotSchedule 은 기존 파드를 삭제하고 ScheduleAnyway 는 유지한다
- DoNotSchedule 은 maxSkew 를 못 지키면 파드를 Pending 으로 두고, ScheduleAnyway 는 점수만 깎고 배치한다
- 둘은 동작이 같고 이름만 다르다
- ScheduleAnyway 는 maxSkew 값을 아예 무시한다