k8s

VM vs Container

class="song" 2025. 10. 1.
728x90

서비스를 배포할 때, 전통적인 VM(Virtual Machine)과 현대적인 컨테이너(Container)는 운영 방식과 특징이 다릅니다.


1. 아키텍처 비교

VM (Virtual Machine)

Host OS

└── Hypervisor

    └── Guest OS
  • 각각의 VM은 독립된 Guest OS를 가집니다.
  • 장점: Host OS와 다른 OS도 사용할 수 있음 (예: 리눅스에서 윈도우 VM 실행 가능)
  • 단점: OS마다 메모리/CPU 자원을 독립적으로 사용하므로 리소스 오버헤드가 큼

Container

Host OS

└── Container Engine (Docker 등)

    └── Container
  • 컨테이너는 Host OS를 공유하며, 가상화 레이어가 거의 없음
  • 주요 기술:
    • Namespace: mnt, pid, ipc, uts, user → 컨테이너 격리
    • cgroups: memory, CPU, I/O, network → 리소스 제한
  • 장점: VM보다 가볍고 빠름, 빠른 배포 가능
  • 단점: Host OS와 동일한 OS만 사용 가능
  • 보안: 하나의 컨테이너가 뚫리면 같은 Host의 다른 컨테이너도 영향을 받을 수 있음

2. 쿠버네티스와 Pod

  • Pod: 쿠버네티스에서의 최소 배포 단위
  • 구성:
    • 하나의 Pod에는 하나 이상의 컨테이너가 포함될 수 있음
    • 컨테이너마다 서로 다른 언어, 라이브러리 등을 사용할 수 있음

기존 VM 방식 vs 쿠버네티스

  • VM 방식:
    • 모듈 하나가 자원을 많이 쓰면, 같은 서비스라도 VM을 새로 띄워야 함
  • 쿠버네티스:
    • 모듈을 컨테이너 단위로 구분하고, 필요에 따라 Pod를 선택적으로 확장 가능
    • 예: 특정 모듈만 확장하여 자원을 효율적으로 사용 가능

결론

비교 항목VMContainer

OS Guest OS 독립 Host OS 공유
리소스 무겁고 느림 가볍고 빠름
OS 다양성 가능 (Linux ↔ Windows) 불가능 (Host OS와 동일)
격리 강력, 보안 우수 상대적으로 낮음, Host 공유
배포 단위 VM 단위 컨테이너 → Pod 단위
확장성 VM 단위 컨테이너/Pod 단위 선택적 확장 가능
728x90

'k8s' 카테고리의 다른 글

kubernetes 시작하기  (3) 2025.10.02
kubernetes를 사용하는 이유  (0) 2025.10.01

댓글