본문 바로가기
프로그래밍 놀이터/Settings

[Docker] 클라우드를 사용한 Docker 실행 환경 구축

by 돼지왕왕돼지 2020. 3. 28.

[Docker] 클라우드를 사용한 Docker 실행 환경 구축


-

Docker 는 이미지만 있으면 동일한 인프라 환경에서 작동하는 앱을 가동시킬 수 있다.

Docker 를 사용하면 온프레미스부터 프라이빗 클라우드, 퍼블릭 클라우드, 하이브리드 클라우드에 이르기까지 실행 환경을 요구사항에 맞춰 자유롭게 선택할 수 있다.

앱에 대한 이러한 높은 이식성이 Docker 의 최대 매력이라고 할 수 있다.





9.1. 클라우드 환경에서 Docker 오케스트레이션 하기


* 분산 환경에서의 컨테이너 운용 관리


-

멀티호스트로 구성된 실제 환경을 클러스터 구성으로 가동시키려면 컨테이너의 시작 및 정지와 같은 조작뿐만 아니라 호스트 간의 네트워크 연결이나 스토리지 관리, 컨테이너를 어떤 호스트에서 가동시킬지와 같은 스케줄링 기능이 필요하다.

더욱이 컨테이너가 정상적으로 작동하고 있는지 아닌지 감시할 장치도 필요하다.

이러한 기능을 갖추고 컨테이너를 통합 관리할 수 있는 툴을 컨테이너 오케스트레이션 툴이라고 한다.



-

Kubernetes

    Google 엔지니어 중심 커뮤니티에서 개발이 진행되고 있는 오픈소스 컨테이너 오케스트레이션 툴이다.

    제공하는 기능도 풍부하고 개발 속도도 빠르며, 대규모 시스템에서의 도입 실적도 풍부하여 실질적 스탠다드다.



-

Docker Engine (Swarm 모드)

    클러스터링 기능을 제공하는 Swarm 모드가 있다.



-

Apache Mesos, Marathon

    여러 호스트의 CPU 나 메모리, 디스크를 추상화하여 하나의 리소스 풀로서 다룰 수 있는 것이 특징이다.

    Mesos 를 사용하여 컨테이너 오케스트레이션을 가동시키려면 별도의 컨테이너 관리용 프레임워크가 필요한데 대표적인 프레임워크가 Marathon 이다.

    



* 퍼블릭 클라우드가 제공하는 매니지드 서비스


-

Amazon EC2 Container Service

Azure Container Service(AKS)

Google Kubernetes Engine(GKE)




* Google Cloud Platform 의 컨테이너 관련 서비스


-

생략...





9.2. Kubernetes 의 개요


-

Kubernetes 는 여러 개의 호스트를 하나로 묶어 Docker 를 이용하기 위한 오케스트레이션 툴이다.

분산 환경에서 마치 한 대의 컴퓨터처럼 투과적으로 컨테이너에 액세스 할 수 있다.

시스템 이용자로부터 오는 부하의 급증에 대해서도 유연하게 스케일하는 장치나 여러 개의 컨테이너를 효율적으로 통합 관리하는 장치도 있다.

아래의 기능들이 대표적이다.


여러 서버들에서의 컨테이너 관리

컨테이너 간 네트워크 관리

컨테이너의 부하분산

컨테이너의 감시

부정지로 업데이트




* Kunernetes 의 서버 구성


-

마스터 서버 (Kubernetes Master)

    클러스터 안의 컨테이너를 조작하기 위한 서버이다.

    kubect1 명령을 사용하여 클러스터를 구성하거나 리소스를 조작할 때는 마스터 서버의 커맨드로부터 리퀘스트를 받아 처리를 수행한다.

    여러 대로 구성된 클러스터 안에 있는 노드의 리소스 사용 상황을 확인하고, 컨테이너를 시작할 노드를 자동으로 선택한다.

    마스터 서버가 여러 대로 분산 구성된 노드를 모아서 관리함으로써 이용자가 봤을 때는 마치 한 대의 서버인 것처럼 행동할 수 있기 때문.



-

백엔드 데이터베이스(etcd)

    etcd 라 부르는 분산 키 벨류 스토어(KVS)를 사용하여 클러스터의 구성 정보를 관리한다.

    여기에는 클라스터를 구축하기 위한 설정 정보가 들어 있다.

    시스템 구성에 따라 이 데이터베이스를 마스터 서버 상에 구축하는 경우도 있다.



-

노드

    실제로 Docker 컨테이너를 작동시키는 서버이다.

    노드를 여러 개 마련하여 클러스터를 구성한다.

    노드의 관리는 마스터 서버가 한다.




* 앱 구성 관리(Pod, ReplicaSet, Deployment)


-

생략...




* 네트워크 관리(Service)


-

생략...




* Label 을 사용한 리소스 식별


-

생략...




* Kubernetes 의 구조


-

생략...





9.3. GCP 를 사용한 Docker 앱 개발


-

생략...





9.4. GCP 를 사용한 Docker 앱 실행 환경 구축


-

생략...




댓글0