KCNA — 쿠버네티스·클라우드 네이티브 입문 · 클라우드 네이티브와 컨테이너 기초 · 퀴즈
퀴즈: 클라우드 네이티브와 컨테이너 기초
문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.
컨테이너와 가상머신의 가장 근본적인 차이는 무엇인가?
- 컨테이너는 디스크를 쓰지 않고 메모리에만 존재한다
- 컨테이너는 호스트 커널을 공유하고, VM 은 게스트 커널을 따로 띄운다
- 컨테이너는 네트워크를 가질 수 없고 VM 만 IP 를 받는다
- 컨테이너는 리눅스에서만 만들 수 있고 VM 은 모든 OS 에서 만들 수 있다
namespace 와 cgroup 의 역할을 바르게 짝지은 것은?
- namespace 는 자원 사용량을 제한하고, cgroup 은 시야를 격리한다
- namespace 는 무엇을 보는지를 격리하고, cgroup 은 얼마나 쓰는지를 제한한다
- 둘 다 자원 사용량을 제한하되 namespace 는 CPU, cgroup 은 메모리를 담당한다
- namespace 는 커널 기능이고 cgroup 은 컨테이너 런타임이 흉내 내는 소프트웨어 기능이다
OCI 규격이 정의하는 세 가지 스펙에 해당하지 않는 것은?
- Orchestration Spec
- Image Spec
- Runtime Spec
- Distribution Spec
containerd 와 runc 의 관계를 가장 정확히 설명한 것은?
- runc 가 containerd 를 호출해 이미지를 내려받는다
- containerd 와 runc 는 같은 기능을 하는 경쟁 제품이라 둘 중 하나만 설치한다
- containerd 는 이미지·스냅샷·생명주기를 관리하는 고수준 런타임이고, runc 는 OCI 스펙대로 프로세스를 띄우고 빠지는 저수준 런타임이다
- containerd 는 커널 모듈이고 runc 는 사용자 공간 데몬이다
12-factor 원칙 중 '설정은 환경에서 주입한다'가 컨테이너 환경에서 특히 중요한 이유는?
- 환경변수가 마운트한 설정 파일보다 암호학적으로 더 안전하게 보관되기 때문
- 쿠버네티스가 설정 파일 마운트를 지원하지 않기 때문
- 이미지는 모든 환경에서 동일해야 하고, 환경별 차이는 실행 시점에 주입되어야 같은 이미지를 개발·스테이징·프로덕션에 그대로 쓸 수 있기 때문
- 환경변수는 컨테이너 재시작 시 자동으로 갱신되기 때문
cgroup 의 메모리 상한을 초과한 컨테이너에서 실제로 일어나는 일은?
- 컨테이너 런타임이 자동으로 상한을 늘려 준다
- 스케줄러가 그 파드를 다른 노드로 옮긴다
- 요청이 큐에 쌓였다가 메모리가 확보되면 처리된다
- 커널의 OOM killer 가 해당 cgroup 안의 프로세스를 종료한다