본문 바로가기
쿠버네티스

가상머신, 컨테이너 정리

by 녤 2022. 11. 12.

1. 용어 정리

 

컨테이너: 구동하려는 애플리케이션을 실행할 수 있는 환경까지 깜싸서, 어디서든 쉽게 실행할 수 있도록 해주는 기술

-환경까지 모두 포함하여 ‘독립적으로 프로그램을 실행할 수 있도록 도와주는 기술’

-컨테이너 환경을 묶어서 배포한 ‘컨테이너 이미지’라는 프로그램을 내려 받아 구동하면 실행되기 때문에 각종 설정 과정이 줄어 들어 좀 더 편리하게 사용할 수 있음

 

컨테이너 런타임: 컨테이너를 사용할 때 필요한 도구, 컨테이너를 쉽게 내려 받거나 공유하고 구동할 수 있도록 해줌

ex) 도커

 

쿠버네티스: 컨테이너 런타임을 통해 컨테이너를 다루는 도구, 여러 서버(노드)에 컨테이너를 분산해서 배치하거나, 문제가 생긴 컨테이너를 교체하거나, 컨테이너가 사용할 비밀번호나 환경 설정을 관리하고 주입해 주는 일 등을 진행

-컨테이너 오케스트레이션이라고 하기도 함

 

쿠버네티스 vs 도커

-쿠버네티스: 컨테이너를 분산 배치, 상태 관리 및 컨테이너의 구동 환경까지 관리해주는 도구

-도커: 컨테이너를 다루는 도구 중 하나

⇒ 쿠버네티스는 컨테이너를 다루기 위해 도커 이외에도 다양한 컨테이너 런타임 소프트웨어를 사용할 수 있음

 


2. 가상머신 vs 컨테이너

 

1) Traditional Depolyment

-가상화 이전, 오래전부터 사용되던 방식

-물리적인 컴퓨터 한 대에 하나의 OS를 깔고 여러가지 프로그램(Application)을 설치하는 방식

-한 대의 컴퓨터에서 모든 것을 처리하려고 하면 어떤 프로그램 동작이 다른 프로그램의 동작을 간섭하거나, 특정 프로그램이 성능을 독점할 경우 또 다른 프로그램의 성능이 떨어짐

-심할 경우에는 프로그램 중단까지 유발할 수 있음

 

2) Virtualized Deployment

-전통적인 방식의 문제를 해결하기 위해 등장한 해법, 가상화 배포라고 하기도 함

-가상머신을 기반으로 배포하는 방법

-하이퍼바이저: 하나의 시스템 상에서 가상 컴퓨터를 여러 개 구동할 수 있도록 해 주는 중간 계층

-APP: 실행하고자 하는 프로그램

-Bin/Library : 프로그램이 실행하는데 필요한 환경과 관련된 파일

-가상머신: 가상 컴퓨터, 컴퓨터이므로 가상머신에도 CPU, 메모리, 저장 장치 등을 개별적으로 할당 할 수 있음

-전통적인 배포 방식보다는 효율적이지만, 가상머신은 완전한 컴퓨터고 가상머신에 일일히 운영체제를 설치해야 하기 때문에 컨테이너 중심의 배포보다는 무거운 편

 

3) Container Deployment

-컨테이너는 가상머신과 달리 프로그램 구동을 위해서 OS를 설치할 필요가 없음, 그림에서와 같이 OS는 하나만 사용

-컨테이너 기반 배포는 전통적 배포 위에 Container Runtime이 올라가 있는 것 처럼 보이지만, 컨테이너는 OS 하단이 어떻게 동작하는지 직접 관심을 두지 않음. ⇒ 가상머신 위에 올라간 OS에서 컨테이너 기반 배포를 하는 것이 가능

-두 개의 프로그램이 하나의 OS에서 구동되는 것은 전통적 배포와 같으나 컨테이너 중심의 배포는 각각의 프로그램을 실행하면서 ‘이 컴퓨터에 나만 구동되고 있다’라고 판단할 수 있도록, 실제로 두 프로그램에 간섭을 일으키지 못하도록 장벽을 만듬

-장벽을 치는 것과 동시에 OS는 각각의 프로그램이 사용할 수 있는 CPU, 메모리 등의 자원 또한 독립적으로 사용할 수 있도록 할당하고 관리함

-이러한 과정을 통해 각각의 프로그램은 스스로를 ‘서로 다른 컴퓨터에 깔려 있다’ 고 생각

⇒ 물론 OS 관점에서는 둘 다 OS에서 구동되는 프로그램

-컨테이너는 OS를 공유하는 방식, 따라서 한 프로그램의 문제가 OS에 문제를 일으킬 경우에는 OS에서 구동 중인 전체 컨테이너의 문제가 될 수 있다는 가능성이 존재정리

 

3. 정리 

 

전통적 배포: 물리적인 컴퓨터 1대에 운영체제 1개가 설치, 하나의 운영체제 위에서 여러 프로그램을 돌림

가상머신 기반 배포: 물리적인 컴퓨터 1대에 여러개의 가상머신이 존재, 각각의 가상머신 마다 여러 운영체제를 설치하여 여러 프로그램을 돌림

컨테이너 기반 배포: 컴퓨터 형태 구애 받지 않고 하나의 OS를 사용, 프로그램이 OS를 나누어서 사용

 

 


이전 블로그 글 재업로드 하였습니다 

https://yrshin.tistory.com/51

 

가상머신, 컨테이너 정리

 

yrshin.tistory.com