컨테이너 배포
전통적으로 애플리케이션은 물리 서버(Hardward)에서 실행되었다. 한 서버에 여러 애플리케이션을 실행할 경우 애플리케이션마다 점유할 메모리나 CPU 등 리소스를 제한할 방법이 없다는 것이 문제였다. 한 애플리케이션 인스턴스가 리소스를 대부분 차지하는 경우 다른 애플리케이션의 성능이 저하됐다. 물리 서버마다 하나의 애플리케이션만 실행하는 대안은 너무 많은 비용이 들었다.
하나의 물리 서버에서 리소스를 분할하는 방법으로 가상화 기술이 도입되었다. 독립적인 리소스를 갖는 가상 머신(Virtual Machine)에서 애플리케이션을 실행하면 다른 VM의 애플리케이션과 완전히 격리할 수 있다. VM은 언제든 폐기하거나 새로 생성할 수 있다. 따라서 가상화를 이용하면 물리 서버의 리소스를 효율적으로 사용할 수 있고, 유연하고 확장이 용이한 애플리케이션을 서비스할 수 있다.
VM은 완전한 컴퓨터다. 따라서 일일이 OS를 설치해줘야 하고, 그만큼 무겁다. 컨테이너는 VM과 마찬가지로 컨테이너는 독립된 파일 시스템, CPU, 메모리, 프로세스 등이 있다. 컨테이너의 장점은 Host Server의 OS를 공유해 VM보다 가볍다는 것이다. 하지만 이때문에 안정성은 조금 뒤쳐진다. VM은 OS까지 격리되어 특정 프로그램이 다른 VM의 프로그램에 영향을 줄 일이 없다. 하지만 컨테이너는 OS를 공유하기 때문에 특정 프로그램이 OS에 영향을 줄 경우 다른 컨테이너의 프로그램도 영향을 받을 수 있다.
컨테이너 런타임과 쿠버네티스
컨테이너는 기본 인프라(Hardware 등)에 종속되지 않는다. 따라서 컴퓨터의 형태와 상관 없이 OS만 있다면 다른 컴퓨터에서도 사용 가능하다. 심지어는 가상머신 위에서 컨테이너를 만들 수도 있다.
가상화를 위해서는 VMware 같은 Hypervisor라는 프로그램이 필요하다. 위 그램의 컨테이너 배포에서는 Hypervisor 위치에 Container Runtime이 있다. 컨테이너 런타임은 컨테이너를 사용할 수 있도록 지원해주는 프로그램이다. 가장 대표적은 컨테이너 런타임이 바로 도커다. 도커 컨테이너의 규격은 표준화되어 있기 때문에 도커가 아니더라도 다른 컨테이너 런타임에서도 도커로 만든 컨테이너를 사용할 수 있다.
쿠버네티스는 컨테이너 런타임을 통해 여러 컨테이너를 다루는 도구다. 쿠버네티스는 여러 서버(노드)에 컨테이너를 분산해서 배치하거나, 문제가 생긴 컨테이너를 교체하거나, 컨테이너가 사용할 비밀번호나 환경 설정을 관리하는 일 등을 한다. 이러한 작업을 컨테이너 오케스트레이션이라고 한다.
참고
https://www.samsungsds.com/kr/insights/220222_kubernetes1.html
'Engineering' 카테고리의 다른 글
[Set Up] Ubuntu에서 Virtualbox로 Kubeflow 환경 구성하기 (0) | 2023.02.22 |
---|