[Infra] Kubernetes vs Swarm vs Mesos 비교

chrisjune
5 min readDec 7, 2019

--

이전의 포스트를 통하여 각 오케스트레이션 솔루션의 특징에 대하여 알아보았습니다.

본 포스트에서는 솔루션을 비교하도록 하겠습니다.

특징 비교

클러스터 설치

Swarm: 설치와 설정이 아주 쉽습니다. 모든 요소는 대부분 도커기반입니다. systemd내부에 통합되어있습니다.

K8S: 설정이 조금 더 복잡합니다. yaml을 활용하여 클러스터의 모든 서비스를 정의할 수 있고, 이는 k8s만의 고유한 특징입니다.

Mesos: 일반적으로 작은 클러스터상에서는 설치와 설정이 쉽습니다. 하지만 규모가 커질 수록 설정이 산술적으로 복잡해집니다.

Container Deployment

Swarm: docker native이기 때문에 설정 또한 매우 간단합니다.

K8S: YAML 기반으로하여 배포 어플리케이션의 모든 구성요소를 설정 가능합니다 (pods, serivces, replication, controllers)

Mesos: JSON 기반으로하여, 메소스와 마라톤 REST API에 전달할 설정 파일을 정의할 수 있습니다.

클러스터 구성을 위한 최소 사이즈

Swarm: (테스트목적으로) 하나의 서버로 모든 것이 가능합니다. 보통의 HA 설정을 위해서는Discovery layerManager layer가 필요합니다. 각 레이어에 최소한의 두개의 서버들이 필요합니다. 또한 서비스 배포와 replication을 위하여 여러 개의 worker들이 필요합니다.

K8S:하나의 마스터서버 그리고 하나의 노드가 필요합니다. 일반적인 프로덕션에서는 Discovery layer, Master layer가 각 레이어에서 최소한 3개씩 있어야 합니다. 그리고 Node는 필요한 만큼 설정합니다

Mesos: 하나의 마스터, 하나의 슬레이브, 운영환경에서는 최소3개의 마스터와 몇개들의 슬레이브가 필요합니다.

확장성

Swarm: 스웜에서 발전하고 있는 부분입니다. 소~중형 시스템에서는 스웜을 고려합니다.

K8S: 중~대형 클러스터에서 고려합니다. pod들의 많은 컨테이너들을 포함한 복잡한 어플리케이션들에 적합합니다.

Mesos: 대~초대형 스케일 클러스터에 적합합니다. 하나의 클러스터에서 컨테이너와 일반 응용 어플리케이션을 조합할 때 가장 좋은 선택지입니다.

Maturity

Swarm: 안정적이지만 아직도 진화중입니다

K8S: 아주 안정적이고, Google internal BORG Platform의 후계자

Mesos: 아주 안정적, 특히 초대형 클러스터 수천개의 서버를 목표로 할때 적합

가장 큰 장점

Swarm: 사용이 쉽고 docker native입니다

K8S: POD스케줄링을 통하여 복잡한 어플리케이션들을 배포하는것을 관리할 수 있습니다.

Mesos: 수 천개 확장성과 배포될 어플리케이션들을 rackhost기반의 fine-tunnning이 가능합니다.

최종 승자는?

예상하신 것 처럼 승자는 없습니다. 오케이스트레이터 별로 고유의 특장점이 있기 때문입니다. 쉽게 사용하고 큰 스케일이 아니라면 Swarm, POD의 설정을 통하여 복잡한 것을 설정하고, 수 천개까지 서버확장이 필요한게 아니라면 K8S를, 초대형, 수 천개의 확장, 호스트와 rack에대한 세세한 관리가 필요하다면 Mesos를 추천합니다.

클라우드에서는 어떨까요?

OpenStack

오픈스택은 도커 오케스트레이션을 위한 Magnum이라는 자체 구성 요소를 가지고 있습니다. Magnum은 사실 오케스트레이션 솔루션은 아닙니다. Swarm, K8S, Mesos의 세 모델에 기반하여 도커 오케스트레이션 클러스터를 만드는 구성요소입니다. Magnum은 단지 클러스터 배포, 관리를 단지 자동화하였습니다.

Amazon Web Services

클라우드의 공룡 AWSECS(EC2 Container Service)라는 독자적인 도커 솔루션을 제공합니다. 이는 앞서말한 세 모델에 기반하지 않았고, 독자적인 API를 사용하고 있고, AWS의 다른 서비스들과 아주 강하게 연결되어있습니다.

Microsoft azure

MS는 OpenStack과 비슷하게 접근을 하고있습니다. Azure Container Services는 세 모델이 있는 컨테이너를 제공합니다.

Google Cloud Engine

구글은 Kubernetes를 개발했기 때문에 K8S에 기반한 GKE(Google Kube Engine)을 제공합니다.

마무리

클라우드 환경에서 컨테이너를 사용하고 있다면 세 솔루션의 특징을 이해하는 것이 중요합니다. 배포환경과 비지니스 특징을 고려하여 우선순위를 정하면 어떤 솔루션을 사용할 것인지는 쉽게 결정할 수 있을 것입니다.

참고

--

--