PE Notes · SW
컨테이너와 쿠버네티스
VM과 컨테이너의 격리·기동을 가르고, Docker 이미지 생명주기와 쿠버네티스 컨트롤 플레인·오브젝트를 정리한 뒤 스케일·보안·관리형을 비교합니다.
게스트 OS를 통째로 올리면 격리는 두껍고 기동은 느립니다. 커널을 나누어 쓰면 밀도는 오르고 초 안에 뜹니다. 는 그 경량 격리이고, 는 원하는 개수·상태를 클러스터가 맞추는 오케스트레이션입니다.
컨테이너와 Docker
위 VM은 완전한 게스트 OS를 품습니다. 컨테이너는 호스트 커널을 공유하고 네임스페이스·cgroups로 프로세스를 가둡니다. 부팅은 분이 아니라 초, 밀도는 높고, 격리는 VM보다 얇습니다.
에서 이미지는 레이어와 Copy-on-Write입니다. 컨테이너는 그 인스턴스입니다. 은 FROM·RUN·COPY·CMD로 빌드를 자동화합니다. build로 만들고 레지스트리(Hub·ECR·Harbor)에 올린 뒤 run으로 포트·볼륨·환경 변수를 붙입니다. 이미지가 같아야 개발과 운영이 같은 단위가 됩니다.
쿠버네티스 구조와 오브젝트
컨트롤 플레인은 API 서버가 모든 요청의 문이고, 가 클러스터 상태를 키-값으로 지키며, 스케줄러가 파드 자리를 고르고 컨트롤러가 선언과 실제를 맞춥니다.
워커는 kubelet이 파드를 만들고, kube-proxy가 서비스 네트워크를 구현하며, containerd·CRI-O가 CRI로 실행합니다. 최소 단위는 , 배포·롤링은 Deployment, 내부 부하는 Service, 외부 진입은 Ingress입니다. ConfigMap·Secret은 설정을 이미지 밖으로 빼 12 Factor를 지킵니다. 클러스터 안 동서 트래픽이 늘면 와 가 옆에 붙습니다.
운영 기능과 보안
자동 스케일은 가 CPU·메모리로, VPA·KEDA가 자원·이벤트로 돕습니다. 자가 치유는 프로브 실패 시 재시작, 노드 장애 시 다른 노드로 옮깁니다. 롤링은 maxSurge·maxUnavailable으로 무중단하고, 실패하면 되돌립니다.
보안은 빌드에서 이미지 스캔, 런타임에서 시스템콜 감시, 권한은 , 파드 간은 Network Policy로 입니다. 관리형은 EKS·GKE·AKS가 컨트롤 플레인을 맡기고, Autopilot처럼 워커까지 넘기는 모드가 있습니다.
| 비교축 | VM | 컨테이너 |
|---|---|---|
| 격리 | 게스트 OS | 커널 공유 |
| 기동 | 분 | 초 |
| 밀도 | 낮음 | 높음 |
| 이식 | 이미지 무거움 | 레이어 이미지 |
| 오케스트레이션 | 하이퍼바이저·도구 | Kubernetes |
답안은 VM≠컨테이너, 이미지 생명주기, 컨트롤 플레인 세 조각, HPA·치유·RBAC를 한 장에 씁니다.