컨테이너는 호스트 커널을 공유하는데, namespace와 cgroup이 각각 어떤 격리와 자원 제어를 담당하는지, 그리고 이것이 VM 대비 격리 수준이 약하다고 평가되는 이유를 설명해주세요.
힌트 · namespace는 보이는 자원의 격리, cgroup은 자원 사용량 제한이라는 역할 분리와 커널 공유로 인한 공격 표면 관점에서 접근하세요.
모범답안
컨테이너는 호스트 커널을 공유하기 때문에 VM과는 격리 수준에서 차이가 있습니다.
namespace는 프로세스가 접근할 수 있는 시스템 자원을 격리하는 역할을 합니다. 예를 들어, PID namespace는 각 컨테이너마다 고유한 프로세스 ID를 부여하고, Network namespace는 독립적인 네트워크 인터페이스를 제공하여 컨테이너 간의 네트워크 통신을 격리합니다. 즉, namespace는 컨테이너가 '무엇을 볼 수 있는지'를 제어합니다.
cgroup은 컨테이너가 사용할 수 있는 CPU, 메모리, 디스크 I/O 등의 시스템 자원 사용량을 제한하고 관리하는 역할을 합니다. 이를 통해 특정 컨테이너가 과도한 자원을 사용하여 호스트 시스템이나 다른 컨테이너에 영향을 미치는 것을 방지합니다. 즉, cgroup은 컨테이너가 '얼마나 많은 자원을 사용할 수 있는지'를 제어합니다.
VM 대비 격리 수준이 약하다고 평가되는 이유는 바로 이 '커널 공유' 때문입니다. VM은 자체적인 커널을 가지므로 호스트 커널의 취약점이 컨테이너에 영향을 미치지 않습니다. 하지만 컨테이너는 호스트 커널을 공유하기 때문에, 호스트 커널에 보안 취약점이 존재할 경우 이를 통해 컨테이너 간 또는 컨테이너에서 호스트로의 탈출(escape) 공격이 발생할 가능성이 있습니다. namespace와 cgroup은 논리적인 격리를 제공하지만, 근본적으로는 동일한 커널 위에서 동작하기 때문에 VM 수준의 강력한 하드웨어 기반 격리에는 미치지 못합니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 DevOps / CI·CD 면접 질문
- Kubernetes의 네트워크 정책(Network Policy)에 대해 설명해주세요.
- 동일한 Dockerfile로 빌드했는데도 CI 환경마다 빌드 캐시가 거의 적중하지 않아 빌드 시간이 길어지는 상황입니다. 레이어 캐시가 무효화되는 원인과, 캐시 적중률을 높이기 위한 Dockerfile 작성 전략을 설명해주세요.
- 멀티 스테이지 빌드(multi-stage build)는 어떤 문제를 해결하며, 빌더 스테이지와 런타임 스테이지를 분리할 때 이미지 크기와 보안 측면에서 어떤 이점이 있는지 설명해주세요.
- 쿠버네티스에서 Deployment의 롤링 업데이트가 진행되는 도중 일부 트래픽이 5xx를 반환하는 현상이 보고됐습니다. readinessProbe, terminationGracePeriod, preStop 훅이 이 문제와 어떻게 연관되는지 설명해주세요.
- 쿠버네티스의 Service 타입 중 ClusterIP 트래픽이 실제 파드까지 전달되는 과정을 kube-proxy(iptables 또는 IPVS 모드) 관점에서 설명하고, 두 모드의 성능 차이가 발생하는 이유를 설명해주세요.