Kubernetes

컨테이너(Container) & 가상머신(VM) 비교

컨테이너 가상머신 비교 ( Container vs VM )

 

가상머신

- 구성요소 뿐만 아니라 시스템 프로세스를 실행해야 하기 때문에 추가 컴퓨팅 리소스가 필요

- 보안 : 가상머신 자체 리눅스 커널을 사용해 보안 강화

- 타입1(베어메탈 가상화 하이퍼바이저), 타입2(호스트 운영체제 가상화)가 있다.

 

 

컨테이너

- 컨테이너는 도커엔진만 있으면 어디서든 작동. 

- 컴퓨팅 : 호스트 OS에서 실행되는 격리된 프로세스로서 추가 프로세스의 오버헤드가 없음.

- 보안 : 컨테이너가 하나의 커널을 공유하기 때문에 보안 위험이 존재

 

 

컨테이너 격리 메커니즘

 

리눅스 네임스페이스
각 프로세스가 시스템에 대한 독립된 뷰만 볼 수 있도록 함.* 프로세스는 동일한 네임스페이스 내에 있는 리소스만 볼 수 있음. 네임스페이스 종류 (마운트,pid,네트워크,프로세스간통신,호스트와 도메인이름, 사용자ID)

 

리눅스 컨트롤 그룹(cgroups)
프로세스를 격리화하고 리소스를 제한하는 리눅스 커널 기능.

 

도커 (docker)

애플리케이션을 패키징, 배포, 실행하기 위한 컨테이너 기반 플랫폼

도커는 컨테이너를 여러 시스템에 쉽게 이식 가능하게 하는 최초의 컨테이너 시스템.

도커로 패키징된 애플리케이션은 운영체제에 종속적이지 않다.

도커 기반 컨테이너 이미지는 여러 이미지에 공유되고 재사용 될 수 있는 레이어로 구성됨.

컨테이너 이미지 레이어는 읽기 전용이다. 컨테이너가 실행될 때 이미지 레이어 위에 새로운 쓰기 가능한 레이어를 생성한다.

 

* 모든 컨테이너가 호스트의 리눅스 커널을 사용한다는 것 때문에 특정 특정 커널 버전이 필요하다면 모든 시스템에서 작동하지 않을 수 있다.

 

*쿠버네티스 초기 버전에는 컨테이너 런타임으로 도커를 유일하게 지원했지만 현재는 CRI를 준수하는 어떠한 런타임도 사용이 가능함