Welcome! 🙋‍♂️ View more

Engineering 💻/Cloud

[Docker] 컨테이너와 도커 그리고 쿠버네티스

DeepFlame 2022. 1. 18. 23:24

Cloud를 공부하다보면 컨테이너/도커/쿠버네티스라는 개념이 자주 등장한다.

간단히 말하면 과거 가상머신의 불편함을 해결하고자 컨테이너와 도커라는 개념이 생겨났고, 컴퓨팅 파워가 늘어나다보니 다수의 도커와 컨테이너를 운영해야하는 상황이 발생하여 쿠버네티스가 생겨났다. 해당 글에서는 이 항목들에 대해서 살펴볼 것이다.

 

 

도커와 컨테이너


소프트웨어는 OS와 라이브러리에 의존한다. 따라서 성격이 다른 컴퓨터(OS, 라이브러리 버전이 다름)에서 같은 소프트웨어를 실행할 때 어려움을 느낄 수 있다.

Docker는 Container기반의 가상화 플랫폼이다. Docker를 사용하여 Container를 생성할 수 있으며, 같은 Container를 여러 개 생성하는 것도 가능하다. 이렇게 위의 문제를 해결할 수 있는 것이다.

하나의 OS에서 다수의 Container를 동시에 실행할 수 있다. 이는 동적이며, 독립적이기 때문에 효율적으로 운용할 수 있다. 예를 들어 Java앱이 인기가 많아지면 Java 컨테이너의 수를 늘리고, 트래픽이 줄면 컨테이너를 원상태로 바꾸면 된다.

 

기존 가상머신의 한계

컨테이너 서버와 기존 가상머신

  • 기존 가상머신은 HyperVisor에서 인프라 리소스를 가상머신별로 배분한다. 또한 각 VM은 독립적인 OS를 가진다.
  • 컨테이너 서버는 하나의 Host OS에서 CPU, RAM, Disk, Network와 같은 OS 자원을 필요한 만큼 격리하여 컨테이너에 할당한다.

 

 

 

쿠버네티스


 

쿠버네티스는 Container 오케스트레이션 툴이다.

다수의 컨테이너를 실행하기 위해서는 실행을 관리 및 조율하는 과정이 필요하다. 여기에는 생성과 삭제, 시작 및 중단 시점 제어, 스케줄링, 로드밸런싱, 클러스터링 등의 과정이 있다.

 

쿠버네티스의 목적

  1. 다수의 Docker 서버를 하나의 Pool로 구성
    • 쿠버네티스는 다중 서버의 도커 데몬에 연결하여 사용한다. 이때 사용자는 서버에 도커가 몇 개인지 컨테이너는 몇 개 실행 중인지 알 필요가 없다.
    • 사용자는 필요한 컨테이너를 어떤 목적의 이미지로 만들지 명령만 하면된다.

  2. 다중 서버에 분산되어 컨테이너 생성
    • 만약 두 개의 서버에 3개의 Container를 생성하게 되면 쿠버네티스에서 알아서 나누어 할당해준다.
    • 사용자는 Idle상태의 컨테이너를 직접 찾을 필요가 없다.
    • 또한 컨테이너간 통신을 위해 서버 간에 통신이 가능하다.

  3. 컨테이너 재생성
    • 단일 서버에서 도커 컨테이너를 운영하게 된다면 서버가 다운되거나 컨테이너가 종료될 수 있다. 쿠버네티스는 이 상황을 방지하여 동일한 컨테이너를 지속적으로 생성한다.

  4. 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

반응형