3 minute read

Container Orchestration

간단하게 말하자면 복잡한 컨테이너 환경을 효과적으로 관리하기 위한 도구이다.

이제 알아보자. 간단하게 알아보겠습니다. 자세한 내용은 컨테이너 오케스트레이션의 왕 쿠버네티스 홈페이지 DOCS로

쿠버네티스 DOCS GOGO

배포 여정

deploy

전통적인 배포 시대: 하나의 물리 서버에서 여러개의 APP들을 배포하는 단계였다.

가상화된 배포 시대: 배포에 VM을 도입하면서 APP들의 환경을 격리하고 자원을 보다 효율적으로 사용할 수 있어졌다.

컨테이너 개발 시대: 컨테이너는 VM과 유사하지만 격리 속성을 완화하여 애플리케이션 간에 운영체제(OS)를 공유한다. 그러므로 컨테이너는 가볍다고 여겨진다. VM과 마찬가지로 컨테이너에는 자체 파일 시스템, CPU 점유율, 메모리, 프로세스 공간 등이 있다. 기본 인프라와의 종속성을 끊었기 때문에, 클라우드나 OS 배포본에 모두 이식할 수 있다.

컨테이너(도커)의 장점에 대해 알아보자. 자세한 Docker

  • 가상 머신과 비교해 컨테이너 생성이 쉽고 효율적이다
  • 컨테이너 이미지를 이용해 배포와 롤백이 간단
  • 언어나 프레임워크에 상관없이 애플리케이션을 동일한 방식으로 관리
  • 개발, 테스팅, 운영 환경은 물론 로컬 피시와 클라우드까지 동일한 환경을 구축
  • 특정 클라우드 회사에 종속적이지 않다.

위의 장점들을 통해서 데이터베이스, Redis, RabbitMQ, Jenkins등등 현재 모든것을 이미지화 해서 사용하게 되었다.

docker deploy

위 그림처럼 개발자가 간단하게 코드를 짜고 Build 하고 Docker hub 나 클라우드 허브에 Ship하고 Run하면 배포가 끝나게 된다.

하지만 서비스가 커지고, 컨테이너를 많이 배포하게 된다면? 어떻게 관리할 것인가?

그것이 바로 컨테이너 오케스트레이션 !!!

컨테이너 오케스트레이션

간단하게 말하자면 복잡한 컨테이너 환경을 효과적으로 관리하기 위한 도구이다.

서버 관리자가 하나 하나 해야했던 일들을 대신 해주는 프로그램이라고 보면 된다.

이제 컨테이너 오케스트레이션의 특징에 대하여 하나 하나씩 알아보자

Cluster

Cluster

  • 많은 컨테이너들을 관리하기 위해서는 node들을 clustering하여 master를 두고 중앙에서 관리 할 수 있다.
  • 클러스터 내 노드들끼리 연결을 잘 하도록 설정해 준다.
  • 클러스터 내 노드의 개수가 커지더라도 잘 작동해야 한다.

STATE

컨테이너들의 상태를 입력하고 이것들이 제대로 동작하고 있는지 “상태”를 체크하고 원하는 “상태”로 만들어준다.

만약 APP1을 3개 띄우는 상태를 주었다면 만약 1개의 Container가 죽으면 이것을 중지하고 새로 1개의 Container를 띄어서 3개의 “상태”를 보장한다.

SCHEDULING

여러대의 서버에 여러개의 컨테이너를 띄어야 하는 상황이 온다면 이것을 최적화 하여 적절한 서버에 Conatiner를 실행시키는 스케쥴링 작업.

ROLLOUT & ROLLBACK

프로그래머가 손수 해줬던 ROLL OUT을 자동으로 한꺼번에 해준다.
또한 V2에 문제가 발생해서 Container들을 V1으로 복구해야 한다면 ROLLBACK시켜 한꺼번에 버전을 되돌린다.

SERVICE & DISCOVERY

해당 컨테이너의 IP와 포트번호를 데이터베이스에 저장하고 이것을 바탕으로 PROXY를 통해 자동으로 서버에 접근, 설정을 변경 할 수 있도록 한다.

또한 문제가 발생하면 바로 알려 줄 수 있어 복구할 수 있도록 해준다.

VOLUME

만약 각 컨테이너가 다른 클라우드 서비스의 볼륨을 사용해야 한다고 했을 경우에도 이것을 추상적으로 자동으로 해준다.

Comments