Cloud를 공부하다보면 컨테이너/도커/쿠버네티스라는 개념이 자주 등장한다.
간단히 말하면 과거 가상머신의 불편함을 해결하고자 컨테이너와 도커라는 개념이 생겨났고, 컴퓨팅 파워가 늘어나다보니 다수의 도커와 컨테이너를 운영해야하는 상황이 발생하여 쿠버네티스가 생겨났다. 해당 글에서는 이 항목들에 대해서 살펴볼 것이다.
도커와 컨테이너
소프트웨어는 OS와 라이브러리에 의존한다. 따라서 성격이 다른 컴퓨터(OS, 라이브러리 버전이 다름)에서 같은 소프트웨어를 실행할 때 어려움을 느낄 수 있다.
Docker는 Container기반의 가상화 플랫폼이다. Docker를 사용하여 Container를 생성할 수 있으며, 같은 Container를 여러 개 생성하는 것도 가능하다. 이렇게 위의 문제를 해결할 수 있는 것이다.
하나의 OS에서 다수의 Container를 동시에 실행할 수 있다. 이는 동적이며, 독립적이기 때문에 효율적으로 운용할 수 있다. 예를 들어 Java앱이 인기가 많아지면 Java 컨테이너의 수를 늘리고, 트래픽이 줄면 컨테이너를 원상태로 바꾸면 된다.
기존 가상머신의 한계
- 기존 가상머신은 HyperVisor에서 인프라 리소스를 가상머신별로 배분한다. 또한 각 VM은 독립적인 OS를 가진다.
- 컨테이너 서버는 하나의 Host OS에서 CPU, RAM, Disk, Network와 같은 OS 자원을 필요한 만큼 격리하여 컨테이너에 할당한다.
쿠버네티스
쿠버네티스는 Container 오케스트레이션 툴이다.
다수의 컨테이너를 실행하기 위해서는 실행을 관리 및 조율하는 과정이 필요하다. 여기에는 생성과 삭제, 시작 및 중단 시점 제어, 스케줄링, 로드밸런싱, 클러스터링 등의 과정이 있다.
쿠버네티스의 목적
- 다수의 Docker 서버를 하나의 Pool로 구성
- 쿠버네티스는 다중 서버의 도커 데몬에 연결하여 사용한다. 이때 사용자는 서버에 도커가 몇 개인지 컨테이너는 몇 개 실행 중인지 알 필요가 없다.
- 사용자는 필요한 컨테이너를 어떤 목적의 이미지로 만들지 명령만 하면된다.
- 다중 서버에 분산되어 컨테이너 생성
- 만약 두 개의 서버에 3개의 Container를 생성하게 되면 쿠버네티스에서 알아서 나누어 할당해준다.
- 사용자는 Idle상태의 컨테이너를 직접 찾을 필요가 없다.
- 또한 컨테이너간 통신을 위해 서버 간에 통신이 가능하다.
- 컨테이너 재생성
- 단일 서버에서 도커 컨테이너를 운영하게 된다면 서버가 다운되거나 컨테이너가 종료될 수 있다. 쿠버네티스는 이 상황을 방지하여 동일한 컨테이너를 지속적으로 생성한다.
- 단일 서버에서 도커 컨테이너를 운영하게 된다면 서버가 다운되거나 컨테이너가 종료될 수 있다. 쿠버네티스는 이 상황을 방지하여 동일한 컨테이너를 지속적으로 생성한다.
- Load Balance
- 만약 쿠버네티스 클러스터로 생성된 웹사이트에 3개의 Container가 동작하고 있다고 하면 그 웹사이트에 사용자가 접근할 때마다 Container1 → Container2 → Container3 순서로 접근할 수 있도록 round-robin형식의 Load Balancing을 제공한다.
참고
https://kyumdoctor.co.kr/13
https://velog.io/@geunwoobaek/%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88-%EB%B0%8F-%EB%8F%84%EC%BB%A4-%EA%B0%9C%EB%85%90%EC%A0%95%EB%A6%AC
https://wooono.tistory.com/109
'Engineering 💻 > Cloud' 카테고리의 다른 글
[Airflow] Docker를 활용한 Airflow 구축 (1) | 2022.04.18 |
---|---|
[Docker] Docker-Compose에서 같은 이미지로 여러 컨테이너 생성하기 (0) | 2022.03.30 |
터미널 종료 후에도 프로세스 실행 (feat. Selenium 작동시 유의사항) (0) | 2022.01.05 |
EC2에 Selenium 환경 구축하기 (feat. Chrome, Chrome Driver) (0) | 2022.01.05 |
최초 EC2에 PIP 설치 (0) | 2022.01.05 |