VM vs Container

VM

Hypervisor

  • OS가 독립된 것 처럼 보이게 HW를 쪼개주는 역할
  • virtual box, Xen, KVM, VMware
  • 하이퍼바이저를 사용하여 원하는 운영체제로 GuestOS를 올려 여러 VM을 만들 수 있음

Containers

Container Runtime

  • OS를 쪼개서 OS 위에 독립되게 보여짐
  • 패키지화된 SW에 대해서 전부 하나하나 실행시켜 분리 되게 해줌
  • name space 와 cgroup 을 사용하여 리소스를 독립적으로 쓸 수 있게 함

Container 특징

Standard Packaging

Isolation and Efficiency

  • 표준화된 패키징 방법

Portable

  • 하드웨어A에서 돌리다 꺼내서 public cloud로 가도 돌아가는 특징, VM은 이식성이 없음

Separation of Concerns

  • 분리되어 있는 VM에 비해 보안 문제가 좀 있었는데, 요즘은 그냥 같은 VM 위에 전부 내 컨테이너들만 있어서 괜찮음.
  • 즉, 본질적인 보안문제는 해결된 건 아니지만, 일단 컨테이너가 내꺼만 있으니까 해결

Namespace와 Cgoups

요약하면 독립적인 환경을 만들기 위해 namespace를 사용하고 cgroup을 사용하여 자원 할당 등을 관리하게 됨

namespace

  • 하나의 system에서 수행되지만, 각각 별개의 독립된 공간처럼 격리된 환경을 제공하는 가상화 기술
  • vm에서 쓰이는 hypervisor는 hw 자원을 가상화하지만 namespace는 동일한 OS, kernel에서 작동함
  • 이름 공간이 다르면 동일한 이름이라도 다른 실체로 처리

cgroup

  • 자원 할당을 관리함
  • cpu, memory 이런거 스케줄링 해주는 셈

'Kubernetes' 카테고리의 다른 글

Application Deployment  (4) 2024.11.06
Configuration File (YAML format), Label, Selector  (1) 2024.10.29
Kubernetes Design Principle  (2) 2024.10.29
Kubernetes Architecture  (1) 2024.10.15
VxLAN에 대하여  (0) 2024.09.11
코코자