[docker] Docker 컨테이너가있는 DC / OS의 Marathon 대 Kubernetes 대 Docker Swarm
DC / OS에서 Docker 컨테이너를 실행할 때 Marathon 및 Chronos, Docker Swarm 또는 Kubernetes를 사용할지 여부에 대한 장단점을 찾고 있습니다.
예를 들어 Kubernetes보다 Marathon / Chronos를 사용하는 것이 언제 더 좋을까요?
지금은 대부분 실험 중이지만 여름이 지나면 이러한 서비스 중 하나를 프로덕션에 사용하기 시작할 것입니다. 그때까지 프로덕션 준비가 될지 확실하지 않기 때문에 Docker Swarm을 실격시킬 수 있습니다.
Docker Swarm에 대해 제가 좋아하는 점은 기본적으로 “Docker 명령”일 뿐이며 완전히 새로운 것을 배울 필요가 없다는 것입니다. 우리는 이미 사용 docker-compose
하고 있으며 Docker Swarm (적어도 이론 상으로는)과 함께 즉시 작동하므로 큰 장점이 될 것입니다. Docker Swarm에 대한 저의 주요 관심사는 프로덕션에서 시스템을 실행하는 데 필요한 모든 사용 사례를 포함하는지 여부입니다.
답변
Mesos에서 각 컨테이너 오케스트레이션 프레임 워크의 고유 한 측면을 분석하려고합니다.
다음과 같은 경우 Docker Swarm을 사용 합니다.
- 익숙한 Docker API를 사용하여 Mesos에서 Docker 컨테이너를 시작하려고합니다.
- Swarm은 결국 Kubernetes (K8s-Mesos 포함)와 통신하는 API를 제공 할 수 있습니다.
- 참조 : http://www.techrepublic.com/article/docker-and-mesos-like-peanut-butter-and-jelly/
다음 과 같은 경우 Kubernetes-Mesos를 사용하십시오 .
- 리소스를 공유하면서 함께 예약되고 함께 배치 된 컨테이너 그룹 인 K8s 포드를 시작하려고합니다.
- 상위 컨테이너 옆에있는 하나 이상의 보조 컨테이너 (예 : 로그 아카이버, 메트릭 모니터)와 함께 서비스를 시작하려고합니다.
- K8s 레이블 기반 서비스 검색,로드 밸런싱 및 복제 제어를 사용하려고합니다.
- http://kubernetesio.blogspot.com/2015/04/kubernetes-and-mesosphere-dcos.html 참조
다음과 같은 경우 마라톤을 사용하십시오 .
- Docker 또는 비 Docker 장기 실행 앱 / 서비스를 시작하려고합니다.
- 제약 기반 스케줄링에 Mesos 속성을 사용하려고합니다.
- 애플리케이션 그룹 및 종속성을 사용하여 관련 서비스를 시작, 확장 또는 업그레이드하려고합니다.
- 상태 확인을 사용하여 비정상 서비스를 자동으로 다시 시작하거나 비정상 배포 / 업그레이드를 롤백하려고합니다.
- 서비스 검색을 위해 HAProxy 또는 Consul을 통합하려고합니다.
- 웹 UI 또는 REST API를 통해 앱을 시작하고 모니터링하려고합니다.
- Mesos를 염두에두고 처음부터 구축 된 프레임 워크를 사용하고 싶습니다.
다음과 같은 경우 Chronos를 사용 합니다.
- 종료 될 것으로 예상되는 Docker 또는 비 Docker 작업을 시작하려고합니다.
- 특정 시간 / 스케줄 (a la
cron
) 에 실행되도록 작업을 예약하려고합니다 . - 종속 작업의 DAG 워크 플로를 예약하려고합니다.
- 웹 UI 또는 REST API를 통해 작업을 시작하고 모니터링하려고합니다.
- Mesos를 염두에두고 처음부터 구축 된 프레임 워크를 사용하고 싶습니다.
답변
조금 구식이지만 Apache의 Mesos와 Google의 Kubernetes의 차이점은 무엇입니까? 를 읽고 기본 사항을 올바르게 이해하는 것이 좋습니다. 또한 Mesos는 Kubernetes / Marathon / Chronos와 다른 수준에서 작동합니다. 마지막으로, Timothy Chen의 Docker Swarm + Mesos 를 참조하세요. Marathon과 Swarm은 동일한 Mesos 클러스터에서 동시에 작동 할 수 있습니다.