도커(Docker)와 쿠버네티스(K8s) - 컨테이너와 오케스트레이션

ggong·2021년 5월 30일
0

NODE 환경변수 -> 배포 파이프라인 -> 쿠버네티스 -> 도커까지 의식의 흐름에 따라 타고 타고 알아보는중..!
이제 너무 핫해진 도커(Docker)와 쿠버네티스(K8s)에 대해서 간단한 개념만 정리해 봅시당

1. 가상머신 (도입 배경에 대한 이해를 위해)

웹 서비스를 배포하고 운영하기 위해서 가장 많이 사용하는 방법은 각 애플리케이션을 가상화하여 분리하는 것이다. 하드웨어 인프라 위에 Hypervisor(vmware, VirtualBox 등)을 먼저 설치하고, 그 위에 가상머신을 만들어서 그 안에 하드웨어와 OS, 애플리케이션을 넣어 동작시키는 방식이었다. 이렇게 가상머신을 이용하면 동일한 물리적 하드웨어에서 여러 애플리케이션을 실행시키고, 소프트웨어 구성 요소 간의 충돌을 최소한을 유지할 수 있었다.

그러나 이 가상머신 구조는 가상머신 안에서 애플리케이션을 동작시키기 위한 환경이 너무 무거워진다는 단점이 있다. 각 운영 인스턴스가 앱 자체에 더 효과적으로 할당할 수 있는 메모리와 프로세싱 파워를 소비하기 때문이다. 만약 같은 애플리케이션을 여러대 구성하려고 하면 더욱 많은 비용이 들게 될 것이다.

도커는 컨테이너 기반의 오픈소스 가상화 플랫폼으로, 위의 문제를 컨테이너로써 해결한다.

2. 컨테이너와 도커

보통 컨테이너란 안에 여러가지를 집어 넣을 수 있는 화물 수송용 박스를 말한다. 도커에서 사용하는 컨테이너도 비슷한데, 애플리케이션을 구성하는 다양한 프로그램과 실행 환경을 박스로 묶어 추상화한 개념이다.

도커 환경에서는 위의 VM에서 사용했던 Hypervisor를 사용하지 않는다. 대신 도커 엔진 위에 각 애플리케이션(=컨테이너)가 올라간다. 이 때 도커 플랫폼 위에 올라가는 컨테이너들은 운영체제에서 분리된 애플리케이션이라고 볼 수 있다. 각각의 컨테이너들은 서로 영향을 미치지 않고 독립적으로 실행되면서도 가상머신보다 훨씬 가볍게 사용할 수 있다.

도커 이전에도 컨테이너라는 개념은 있었지만, 도커는 이 컨테이너를 실행하기 위한 모든 정보를 이미지화 함으로써 컨테이너의 이동성과 유연성을 높이는 중요한 변화를 가져왔다.

아래는 VM 방식과 도커를 사용했을 때의 차이를 나타낸 그림이다.

3. 쿠버네티스

컨테이너는 원래 프로세스나 애플리케이션을 각각, 그리고 기반 시스템으로부터 격리하기 위해 만들어졌다. 그래서 개별 컨테이너를 생성하고 배치하기는 쉽다. 하지만 여러 컨테이너(데이터베이스와 웹 프론트엔드, 백엔드 등)을 모아 하나의 단위로 관리할 수 있는 커다란 애플리케이션으로 만들고자 한다면 문제가 달라진다.

쿠버네티스는 이렇게 컨테이너화된 애플리케이션을 자동으로 배포, 스케일링 및 관리해 주는 오픈소스 시스템이다. 여러 컨테이너 애플리케이션을 여러 대의 호스트에 배치하고, 관리하는 작업을 자동화하는 방법을 제공해준다. 이것을 '오케스트레이션(orchestration)'이라고도 하는데, 마치 오케스트라를 지휘하는 지휘자처럼 적절한 배치와 구성을 관리해주는 것이다. 쿠버네티스는 컨테이너 오케스트레이션을 통해 애플리케이션을 최적의 환경에서 사용할 수 있도록 관리해주는 시스템이다.



참고:
쿠버네티스 vs. 도커 : 컨테이너와 오케스트레이션의 이해
(https://www.itworld.co.kr/news/135282)
초보를 위한 도커 안내서 - 도커란 무엇인가?
(https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html)
도커와 도커 컨테이너의 이해
(https://www.itworld.co.kr/insight/110748)

profile
파닥파닥 FE 개발자의 기록용 블로그

0개의 댓글