본문 바로가기

정보통신/시스템 구조

VM과 컨테이너... and 도커... and 쿠버네티스

컨테이너와 VM은 비슷한 목적을 갖는다.

application와 dependency를 독립된 단위로 묶어 어디서든 사용 가능하도록 하는 것이다.

또한, 하드웨어의 자원을 비용면에서 에너지면에서 좀더 효율적으로 사용하기 위한 것이다.

 

VM은 하이퍼바이저를 통해 물리적 기계 위에서 작동한다. 

하이퍼바이저는 hosted machine나 bare metal 위에서 실행된다.

hosted hypervisor는 호스트 OS가 하드웨어 드라이버들을 책임진다. 단점으로는 하드웨어와 

하이퍼바이저 사이에 있는 이 부가단계가 더 많은 리소스 오버헤드를 발생시켜 VM의 퍼포먼스를 떨어뜨릴 수 있다.

bare metal hypervisor는 위와 같은 퍼포먼스 이슈를 host machine의 하드웨어에 직접 설치(guest OS)함으로써 해결한다.

대신 하이퍼바이저에는 제한된 숫자의 디바이스 드라이브가 설치될 수 있다. 그러므로 그만큼 하드웨어 호환성이 제한될 수 있다.


컨테이너는 하드웨어의 가상화를 제공하는 VM과는 달리 컨테이너는 user space의 추상화를 통해 운영체제 레벨의 가상화를 제공한다.

컨테이너는 호스트 시스템의 커널을 다른 컨테이너들과 공유한다는 측면에서 VM과 큰 차이를 갖는다. 즉, 컨테이너는 유저 공간만을 포함하고 VM에는 포함되는 커널이나 버추얼 하드웨어가 포함되지 않는다. 즉, 운영체제 단계의 아키텍처를 모든 컨테이너가 공유하고 있는 것이다.


도커는 리눅스 컨테이너를 기반으로 하는 오픈소스 프로젝트이다. 네임스페이스, 컨트롤 그룹과 같은 리눅스 커널 기능을 이용해서 운영체제 위에 컨테이너들을 생성하는 것이다. 도커가 주목받는 이유는? 간단한 사용법, 빠르고 가볍다, 도커 허브, 모듈성과 확장성


쿠버네티스 .. 컨테이너를 적절한 서버에 배포해주는 역할(스케줄링) 및 컨테이너 상태 체크, 재기동, 모니터링, 삭제관리 등 컨테이너에 대한 종합적인 관리를 해주는 환경. 즉, 컨테이너 운영환경.